Hi Jon,
In this case, we will first import Communication Preferences without Contact, then import the link of both entity records through NN Relationship manager of XrmToolBox.
Before importing, we need to understand how the N:N relationship works.
Please refer to https://carldesouza.com/understanding-intersect-entities-and-nn-relationships-in-dynamics-365/ (You only need to read the <Native Intersect Entity>, the <Manual Intersect Entity> is not needed for now.)
Step 1. Import Communication Preferences without Contact.
Edit your original CSV, delete the Contact column, and only keep the Communication Preferences columns.
Then import CSV into D365.
Step 2. Download XrmToolBox. Open XrmToolBox and connect to your D365.
Install "NN Relationship manager" and open it.
First select Contact, then select the N:N relationship, then Export.

Open the downloaded csv, we can see there are two column, the first is GUID of Contact, the second is GUID of Communication Preference.

Then we need to enter the data into these two columns to link Contact and Communication Preference. We can open the record in D365 and copy the GUID from the URL.
GUID is the part after communicationpreference&id= or contact&id=.

So we get the GUID of both entity records, and enter these GUID into the downloaded csv. Each line is a mapping between Contact and Communication Preference.
Then import it into NN Relationship manager of XrmToolBox.
