Why the launchd has multiple instances per user (not only me and root, but also _spotlight and _windowserver)?
The clear answer is that by separating processes into users, you separate the permissions that each process inherits. This is a long standing unix idiom for security and control of resources by placing per user limits on things like open files and memory and even threads/processes.

On OS X - spotlight needs to spawn processes to index files, window server is responsible for bringing up the lock screen, and things to prepare for the first graphical user to log in. Root is the defacto admin account with broad levels of power and permissions. Each user process gets a launchd to start the programs and things they need.

As far as official documentation, I'd start with this article on Daemons and Services.

https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/Introduction.html

It shows the user vs system level split already in the first page. You can search for other launchd topics from that link if needed (or use Xcode to browse the documentation offline).