file_get_contents
é embutido no PHP e pode ser usado sem instalar nenhuma dependência. Está tudo bem para solicitações simples (mesmo que você possa fazer solicitações POST , mas, por exemplo). recuperar detalhes e cabeçalhos de status de resposta é complicado.
cURL
é uma biblioteca e ferramenta de linha de comando para fazer solicitações de rede - não apenas HTTP, mas também IMAP, SMTP e outros.
Ele requer a extensão curl do PHP, que pode não estar instalada na máquina que seu código está executando.
Tem uma interface processual.
guzzle
é uma biblioteca PHP userland que fornece uma interface baseada em objeto para solicitações HTTP. Você precisa instalá-lo em qualquer caso para usá-lo.