Thanks for asking this. I learned something new today.
This was answered in another post. You are actually doing the same as reading $HTTP_RAW_POST_DATA (wich is deprecated).
Usually when just submitting a basic form you want to read $_POST to get an array of elements php already splitted neatly for you:
$_POST = array(
"key1" => "value1",
"key2" => "value2",);
But when you actually need key1=value1&key2=value2 you want to get the "raw post data". Thats what file_get_contents('php://input'); does.
file_gets_content is usually intended to read a file (local file or url).