There's a lot of work involved in just finding out what you really eed let alone making specific recommendations, but to get you started....
You should certainly plan on using LDAP for a lot of the authentication/authorization stuff. I'd recommend GoSA as a plug-and-play solution.
NFS as a file sharing system makes decoupling users from individual machines very easy - but NFS is not a very secure network file system and has other problems too.
I've not tried myself but you might want to research using SMB for users home dirs - there is a pam module which handles the mounting of drives.
If all the clients are linux based - then you might consider using scp for shared file access - most modern file managers will happily run on top of ssh (I mostly use KDE - where all file access can be routed through wrappers).
For printing - cups. Its not as well integrated with LDAP as it probably should be - but for most purposes that's not such a big issue. And the only real alternative is the BSD printing system - which is not better for integration and loses out on ease of configuration (IMHO - please don't flame - I still use BSD lpd for managing queueing of non-printer stuff like fax).
There are lots of tools for managing software multiple machines. Canonical's landscape is well worth a look - particularly if you're planning on usnig Ubuntu anyway. You don't say how many you're talking about. I'd recommend configuring an ssh server on each box and a GUI server (X, VNC, FreeNX).
Documents & PIM sharing/storage system
Oooh, that's difficult to give a definitive answer to. Kolab+Kontact? Evolution+....? Zimbra? These will provide the email/PIM/calendaring document sharing is a different thing altogther.