Bienvenido al foro.
Aja, Lazarus tiene errores y la solucion es cerrar y volver a abrir.. con Delphi (e imagino que en cualquier otro IDE) tambien puede pasar.
3. Respuesta corta: Es viable. Respuesta larga:
acá
4. Se puede, pero te aconsejo que leas sobre el tema. Yo hace tiempo tambien creia que 3 capas era separar forms-negocio-datos. Eso es patrones (MVC, MVVM, etc).
3 (o en realidad deberiamos decir N-tier) en Delphi se traduce en Datasnap. Y el modelo que termina resultando es masomenos asi
Cliente Datasnap --> Server Datasnap (REST, Standalone, EMS) --> Soporte datos (normalmente una BD)
No lo vas a hacer bien a la primera, ni a la segunda, ni a la tercera. Pero no es un problema del "lenguaje", es mas bien un problema de que hay que aprender a hacerlo. En M$ hay "buenos" vendedores, pero seguramente es tan facil crear una app n-tier con las herramientras de ellos, que en Delphi crear una app cliente-servidor y mostrar datos en un DBGrid; ese es un ejemplo sencillo de marketing que cuesta un par de clicks, pero en realidad una aplicacion termina siendo mucho mas compleja que eso, sobre todo cuando viene el mantenimiento de la app
Este tema puede interesarte (no te dejes engañar por el titulo, se desvio un poco la discusion):
Tipos genericos
Lee los dos articulos de mamcx
Codificar para el cambio
Click.. click.. tap.. RUN.. CRASH!!! Un mejor RAD!
Solo un pantallazo ya que la pregunta es bastante generica, pero creo que vale la pena la aclaracion