You might be better off asking what can't be used to pick, as there are tons of ways. You can use just about anything the object can do to pick it, you can use the system to pick it, you can use other objects to pick it, the list goes on and on. As to your other question, you can add multiple conditions to the event, or pair them up using pv's, families, containers, object pairer, again just about anything they can have in common.
On sub events Im not quite sure what you mean, any thing that is picked is automatically used in actions, unless nothing is picked, and then the parent is used.