En general te puedo decir que es la forma de separar los elementos de tu aplicación para un mejor órden, mantenimiento, separación de elementos, etc.. y nacieron a raíz de resolver algunos de los problemas que había en el modelo cliente-servidor
Actualmente los modelos mas manejados son a 3 capas (presentación, lógica de negocio y datos),
Presentación = Lo que se le presenta al usuario
Logica de negocios (bussiness layer logic o tambien middleware) = recibe las peticiones del usuario, realiza validaciónes, solicitudes y es la que se comunica con la de datos
Datos = Todo lo que tiene que ver con la comunicacion con tu SGBD
Para más referencia
http://es.wikipedia.org/wiki/Program...%B3n_por_capas
Salu2