Why is there only one contenttype associated with list items while lists can have multiple contenttypes.
Shouldn't they have the same number of contenttypes?
what is the logic behind this?
Content types follow an inheritance model. So each content type can inherit from another, enabling some interesting capabilities. For example, an "international contact" content type can inherit from "contact", which would then have all the same fields as "contact", plus whatever else is needed for being an international contact. Though, as noted, a particular list item can only have one content type specified.
A list, however, can have multiple items of different content types. The list itself isn't assigned a content type, rather, the list is configured for which content types it will contain. So, a list could be configured to contain both "contacts" and "international contacts".