My understanding is that there is a ParentId in CutomerAddress which will be either the AccountId or ContactId. Also, the Account entity has an AddressId.
How does the relationship flow between Account and CustomerAddress? Is the Account referencing CustomerAddress?
If I create a new Account/Contact that has the same CustomerAddress of a previously existing Account, will the same AddressId be used or a different record will be created in CustomerAddress for this Account/Contact? Usually, at least the Telephone number column will be different which will result in creating a new record but if all fields are similar will a new CustomerAddress record still be created?
No, CustomerAddress records cannot be shared. The relationship between Account : CustomerAddress and Contact : CustomerAddress is 1:N. There is no N:M intersection.
It makes it simple to understand, but the downside is we may end up with quite some duplicated data.