Containers are easy once you understand how they work. Objects in the container only exist together.
If one object from the container is created, all other objects from the same container will be created automatically. So you spawn an enemy and don't need to create its head! (but you still need to position it correctly and then pin).
If you create a head, another enemy will be created.
You destroy an enemy, its head will be destroyed too.
If you put enemies and their heads onto the layout in editor and do this out of order, then you may attach wrong heads to wrong bodies! That's probably why all those weird things you mentioned are happening.
To your second question - PinnedUID is an expression of Pin behavior. When you pin head to the enemy, Head.Pin.PinnedUID contains UID (unique ID) of the enemy instance. (Sorry, I missed the .Pin bit in my previous comment)
So with this expression you can find the enemy to which the head is pinned using "Enemy -> Pick by unique ID=Head.Pin.PinnedUID"
or you can find the head using "System-> pick by comparison Head where Head.Pin.PinnedUID=Enemy.UID"
The third and very popular option is to create an instance variable EnemyUID on the Head sprite. When you create a new Head, you will need to put Enemy's UID to this variable.
Then you can pick the Head using "Head -> Compare Instance variable EnemyUID=Enemy.UID"
Or you can pick the Enemy using "Enemy -> Pick by Unique ID = Head.EnemyUID"
Endless possibilities!