A separate user for each task?

Solution 1:

Best practices for services like teamspeak are to run them as a seperate user, preferably in a jail - a guide to setting up jails can be found at https://help.ubuntu.com/community/BasicChroot

This is done to limit the damage an exploit in the software can cause - it will hopefully be limited to messing up teamspeak's files, but not the rest of the server.

Php and the webserver can often share a user since they need access to the same files.

No network service should run as root if it can be avoided because an exploit in that service could let an attacker get the same permissions as the user running it. Some software needs root permissions to start but can be configured to drop those permissions after it has started.