Para mi, un servicio web es la combinación de wsdl y soap aunque en algunas partes tembién entienden un
xml-rpc como servicio web. Según entiendo, xml-rpc es el antecesor de soap y no requiere un archivo wsdl.
Un servicio web puede estar escrito en cualquier lenguaje y ser consumido por cualquier lenguaje, así que la extensión es indistinta. asmx, creo, se refiere los servicios web escrtos en asp, pero puedes tener servicios escritos en php, java, python, delphi, c, etc.
Dado que un servicio web se comunica mediante mensajes soap y dado que un mensaje soap no es otra cosa que un documento xml, en principio podrías usar cualquier cosa capaz de enviar, recibir y leer documentos xml para consumir un servicio.
En Delphi lo puedes hacer con Indy o WinInet, por ejemplo. Sólo tienes que hacer un Post con un Content-Type fijado a text/xml y mandar el encabezado SOAPAction con el método requerido.
Sin embargo, hacerlo así es muy rudimentario ya que tú mismo tendrías que formar el mensaje soap para llamar a un método y analizar a pie el xml de vuelta.
Ya observaste que Delphi trae un importador de wsdl, que, básicamente y hasta donde entiendo, analiza el archivo de definición y traduce las estructuras de datos definidas en el wsdl en clases derivadas de TRemotable, que te permiten acceder a dichas estructuras a la manera de Delphi, de manera que te evitas el análisis manual del xml.
Asi que me parece que es la manera más adecuada de consumir un servicio web con delphi.
En fin, yo en esto también estoy muy verde, pero es lo que he entendido hasta ahora.
// Saludos