All containers do is when you pick/create/destroy one object in a container the other objects in it get picked/created/destroyed.
Hierarchies connect objects together so you can move/scale/rotate objects together as one. Lets you destroy the whole lineage if you destroy the parent too. It doesn’t provide any automatic picking of related objects.
Templates let you recreate an object or hierarchy of objects later with the same setup. They do nothing with picking.
Families are mostly to reduce the amount of events. If you find you’re doing the same events for multiple types, you could instead add all those types to a family and just do the events once with the family.
The picking system is the main thing that makes the event sheet differ from other coding languages. But you only really have to deal with it if there are multiple instances of something.