Я бы создал дерево разработки со всеми исходными файлами, библиотечными файлами, инструментами, документами, ресурсами, чтобы любой разработчик мог получить рабочий проект прямо из системы контроля версий без необходимости поиска ссылок.
Наличие ссылок на DLL в папке lib означает, что projectA может использовать версию 1.0 DLL, а projectB может использовать версию 2.0 библиотеки DLL.
Когда решение собирается, оно получает библиотеки DLL, из которых они ссылаются. Если он не может найти их, проект не будет построен.
Посмотрите следующие статьи.
http://www.codeplex.com/treesurgeon
Что касается того, на какие dll вам нужно ссылаться, вы можете пойти только путем ссылки на то, что вам нужно.