Vincent, if your last correction translates into
Company Internal Groups - Group Type
--Managers Group - Group of group type Company Internal Group
----manageruser1 - Member of Managers Group
--Employees Group - Group of group type Company Internal Group
----employeeuser1 - Member of Employees Group
Company Customers Groups - Group Type
--Customers - Group of Group Type Company Customers Groups
----CustCompany1 - Component of Customers Group
-------CustCompany1user1 - Member of CustCompany1
-------CustCompany1user2 - Member of CustCompany1
----CustCompany2 - Component of Customers Group
-------CustCompany2user ... - Member of CustCompany2
then you are definitely on the right track (I think).
As far as I understand, the difference between the two basic relationship types component and membership only applies to groups. Persons (and users) can only be in membership relation to groups. e.g. a user can never be a component of something.
Another source for confusion is that by default there is a subtype of the membership relation called "user profile". I don't know what it is supposed to do. It propably has a special meaning regarding subsites - I just remember that some time ago I tried to add a user to a group and for some reason I could not select this user when using the "User Profile" relation, it only worked with the plain Membership relation.
To check membership take a look at the plpgsql function acs_group__member_p - It should do exactly what you need. Make sure to have a recent cvs checkout though, because this function was fixed not that long ago.