•There is a distinction between instantiating a generic component, and using the instantiated component.
•The generic formal region of components can differ, but as far as using them goes, once instantiated then components are basically the same, since they have a more or less identical static interface. (They differ in their execution behavior, of course.)
•Yes, container types are tagged, but that’s mostly to give you distinguished-receiver syntax. (Subprogram parameters that are tagged are also implicitly aliased.)