RE:TForm.create(self) o TForm.create(application)
Todo objeto visual (=GUI) necesita un padre, el cual se especifica al decir objeto.create(.
Application es el objeto que es padre de todas las formas. Self es una variable dinamica (como result, cuando le damos en una funcion result:=) que es identica al objeto actual (por ejemplo, si das doble click en un formulario, Self es el formulario. Si lo haces en un boton, self es el boton, self significa "el mismo" o "yo")
Por lo tanto, a menos que estes buscando introducir un formulario dentro de otro formulario o control, es mas logico que sea el padre aplication y no self. Pero por los demas controles, es mas normal que sea self (por ejemplo, si creamos un boton en tiempo de ejecucion)