This stuff is set up that way for a reason, it is designed to give people a maximum amount of flexibility to work the way they want. More options sometimes means things get more complicated, that is always the trade-off. But IMO Rhino’s display/print color system is fairly simple to work with.
Often times during the modeling phase people don’t necessarily want to set up materials for rendering, that comes more towards the end. So an object or layer will have the default material unless otherwise assigned. Render materials are (can be) pretty complex, not just color, but texture, bump, etc. Render color/material is only shown in a “rendered” viewport - again, that is done on purpose, many people do not want to model in a rendered display mode.
The print color being different from the display color is also used by people who need to have specific colors when printing - colors that don’t necessarily match the display colors.
The print dialog should also easily give you the choice of which color to use when printing - however unfortunately there are still a number of bugs in the system that desperately need fixing.
The way the display color system works with objects:
By default, in wireframe and various shaded display modes, an object’s display color is the layer color (by layer), when color has not been individually assigned (by object).
Assigning a display color directly to an object (by object) overrides the layer color.
By default the object’s print color is the same as the layer color. If one assigns a color directly to an object its print color does not change automatically - it will stay by layer - one must also assign the “display” color as the print color if one wants.
Working in a rendered mode will show the object’s material - color, texture etc. for surface/mesh objects; curves do not have a render material so they stay the display color - if they are shown at all.
Now we add the complications:
Custom display modes can also be set up to assign specific colors and materials to both curves and surface objects, which will the override the other display colors
Blocks can take on color assignments from the layers the original objects were on or the individual color the object was assigned or the color of the layer the block instance is on… Depends on how they are set up.