Contacts to Multiple Accounts setup
Key Takeaway
Each contact keeps one direct relationship to its primary account and can have indirect relationships to other accounts. To turn on Contacts to Multiple Accounts, edit "Account Settings" in Setup, select "Allow users to relate a contact to multiple accounts", and save.
Contacts to Multiple Accounts lets one contact record be related to more than one account. People often work with several companies, so reps can track those links without creating duplicate contacts. Each contact keeps one primary account, which is a direct relationship. Every other account link is an indirect relationship stored as an Account Contact Relationship record.
Direct and indirect relationships
Contacts to Multiple Accounts handles cases like a business owner who owns several companies, or a consultant who works for several organizations. One contact is related to every account the person works with, so you don't need a duplicate contact for each company.
Every contact still needs a primary account, which is the account in the contact's Account Name field. The link to the primary account is a direct relationship. Every other account link is an indirect relationship.
Priya Shah's contact record has Northwind Traders in the Account Name field. Northwind Traders is her primary account, so she is a direct contact of Northwind Traders. Priya also advises Blue Harbor Foods, so a rep adds Blue Harbor Foods as a related account on her contact. Priya is now an indirect contact of Blue Harbor Foods and appears on its Related Contacts related list. The org still has only one contact record for Priya.
Salesforce stores these relationships in the Account Contact Relationship object. When a user creates a contact with an account, Salesforce also creates a direct Account Contact Relationship record behind the scenes.
A contact must have a primary account before you can give it indirect relationships, which means a private contact can't have them.