These documents are based on what we did at Liip in a couple of projects. It worked out quite well there, so we recommend doing things the same way for other projects.
Source Code Control
Git seems to be the best choice, as it allows to handle local changes where necessary, and still update from the main project.
Drupal moved to git some time ago: http://git.drupalcode.org/
Git submodules are used to handle non-core Drupal modules.
The git commands to update code or add and remove modules are explained in Drupal 6 - Drupal and git source code control for Drupal 6, and in Drupal 7 - Drupal source management with git for Drupal 7.