In the begining as an MS CRM consultant I was always tempted to group different types of contacts in the system togather into the contact entity and use a type picklist to filter on different types of contacts, but expirence has taught me other wise.

If you have different types of “Contacts” whos information you want to hold in the system then I highly recommend creating custom entities. I have found this to be espically critical in implementations for the Financial and Insurance industry. When you have broker contacts, supplier contacts and so forth it is a good idea to hold the information in custom entities. This makes it easy to referece these types of contacts to Policies and contacts.