Hola Wilson,
lo que mencionás se encasilla dentro de la Ingeniería del Software en dos tópicos: Gestión de la Configuracuión y Despliegue (deploy).
Yo primero te recomendaría echar un vistazo a la bibliografía existente sobre el tema para comprender bien los aspectos de la cuestión. Podría ser en Ingeniería del Software de Pressman o en el de Sommerville
Por lo que contás, mucho del despliegue se puede automatizar mediante scripts que se conecten a los servidores y suban los archivos nuevos.
Lo de la configuración, hay varias formas de encararlo dependiendo de qué tan semejantes son los proyectos y de qué código comparten:
- tener un proyecto y varias ramas (branch), una para cada cliente
- tener un core central y que cada proyecto específico lo use, de manera tal de solo concentrarte en lo particular de cada cliente.
- tener todo el software integrado con todas las funcionalidades y que, dependiendo de la configuración, cada uno funcione como es necesario.
- aislar las interfaces para que se manejen por fuera del proyecto, de manera que un cambio visual no implique cambios en el funcionamiento.
Mucho de esto depende de la arquitectura, del paradigma de programación y un poco también de gustos.
Te dejo algunos enlaces sobre Gestión de la Configuración, hasta que encuentres los libros:
http://es.wikipedia.org/wiki/Gesti%C3%B3n_de_configuraci%C3%B3n_de_software
http://es.wikipedia.org/wiki/Software_Configuration_Management
http://www.monografias.com/trabajos99/gestion-configuracion-del-software/gestion-configuracion-del-software.shtml
Saludos!