Are you trying to load two instances from your top level "HEAD..." at the same time? If so, how do you know what the dimensions of the component parts should be? What will happen, if I'm thinking through things, is the "last" assembly to have its relations evaluated will "win". It is the one whose dictated dimensional values will be applied to the components.
There is not a different component loaded for every assembly you have in memory. If you have a part that is being used in all the assemblies, it is a part in memory only once. It has its own Session ID. If you load up another assembly that uses that same part, it references the exact same part that is already in memory. So if that second assembly makes changes to the part those changes will take effect and thus change what is going on in the first assembly. This is why I generally don't use assembly relations to drive dimensions in components.
My method for doing what you seem to be trying to do would be to:
(1) Build the lower level part(s) with all the options I think I'm going to need. For example, "femhead" will have a family table with instances like "femhead-32dia-coat", "femhead-32dia-nocoat", "femhead-28dia-coat", etc.
(2) In the top level assembly, say "femhead-asms", just have the generic, "femhead" in the assembly with the other parts.
(3) Put a column in the family table of "femhead-asm" for the "femhead" component.
(4) For each instance of the assembly, instead of the default "Y" or "N", put the name of the version of the "femhead" part that you want for that instance. For example, "femhead-asm-32coat" would have "femhead-32dia-coat" instead of "Y" in the "femhead" column.
Perhaps this method of structuring the assemblies will work for you.