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 DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN). 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.