You get a nicer display in the development code, but you're right, we don't display the sub-fields for preferred labels, and they are not well documented anywhere but in the code itself. We definitely need to explain this better in the documentation.
For now, here's a short explanation that I hope will help: Preferred labels are treated somewhat differently than other data elements. Each record can have at most one preferred label per locale. The preferred label is actually a container with several fields in it. For most records these subfields are "name" (the text of the label), locale_id (the locale of the label) and type_id (the optional type of the label). Entities are unique in that they have several different fields that make up parts of the name: display name, surname, forename, other_forenames, middlename, prefix, suffix.
If you omit the subfield most labels will default to "name"; entity labels default to "display name"
So ca_objects.preferred_labels.name is what you map to to set the label for an object; ca_entities.preferred_labels.displayname is what you use to set the display name for an entity, but you'd almost certainly map to surname and forename (at least) as well.