Your entity graph would look something like (pseudocode):
Contact{
name:string
emailAddress:string
//...other attributes of contacts
emails<--(optional,cascade)-->>Email.contact
}
Email{
from:string
// ... other attributes of emails
contact<<--(required,nullify)-->Contact.emails
}
In both the entity (abstract) and object (concrete) graphs, you need only link contacts to their emails without any particular order. You shouldn't worry about ordering the relationships in the entity graph because the order in which you want to display the objects might change from moment-to-moment. That order is determined by the sort descriptor of each particular fetch request. The fetch request will return an array in any order you define. E.g one time you want emails sorted by date received, another time by from, another time by some other attribute. You can even resort the array the returned by a fetch to get exactly the order you want.
You just want to make sure that the entities have attributes that capture the information on which you want to sort.
In the very rare cases in which some type of ordering is absolutely required in the entity graph itself, you should add a ordering attribute to the entity itself and write custom code to maintain the sort order.