If the collection represents a series of independent operations passed together to cut down on chatter, then it can make sense to return a collection of results. Some passed, some didn't.
If the collection represents a series of transactional operations passed together to imply "please do all of these things" then you should treat them as a proper transaction - either they all succeed or they all fail.
If the collection represents a set of inputs, then it usually is useful to discard "bad" inputs. This helps prevent people from flooding your service with bogus requests. It also allows you to treat "non-existent" inputs the same as "invalid access" inputs so that you're not leaking data to people without permission to operate on certain inputs. A bunch of invalid inputs is the same as an empty set of inputs, which reduces complexity of error handling.
If the collection represents a cohesive bundle of data, then modifying that bundle is often not a good idea since you're silently changing its meaning. In those cases it's usually better to return a nice single error about the invalid input (unless it's a permissions or existence issue, in which case you want it to look like a nice single error about normal invalid input).