file_get_contents
is in-built into PHP and can be used without installing any dependencies. It's fine for simple requests (even though you can do POST requests, too), but e.g. retrieving response status details and headers is cumbersome.
cURL
is a library and command line tool to do network requests - not only HTTP but also IMAP, SMTP and others.
It requires the PHP curl extension, which may not be installed on the machine your code is running.
It has a procedural interface.
guzzle
is a PHP userland library that provides a object based interface for HTTP requests. You need to install it in any case to use it.