User level information about instances can be found in the user manual.
Currently instances are handled in two ways. The first is the older "dupli" system, which creates a flat list of
DupliObject. This is communicated to renderers with the dependency graph iterator (See
The render engines see instances from this system as separate temporary objects with a link to the original object they were generated from.
The second system is the
InstancesComponent, which is a hierarchical list of geometry set references with corresponding transforms. Currently these instances are converted to the dupli system for renderers and the rest of Blender to use.
However, eventually there may be changes to generate a more efficient output for renderers, such as a list of meshes combined with all of the transforms that use them.