La primera pregunta es obvia, si te da error de cURL es que usa cURL, la segunda es el constructor de SoapClient quien hace la conexión al servidor remoto, aunque puedes usar cURL o algún socket para obtener la información y la tercera vas a tener que esperar que alguien te contesté o mejor
lee el manual que allí hay muchas respuestas también en los comentarios.