Функция stream_context_create — зачем нужна?
stream_context_create - это про потоки данных, не обязательно соответствующие протоколам, поддерживаемым в curl.
Часто раньше выручало, когда на хостинге не был установлен curl<?php
/*
*POST запрос при помощи file_get_contents
*/

//строка с POST данными
$data='a=1&b=2';

//задаем контекст
$context = stream_context_create(
array(
        'http'=>array(
                        'header' => "User-Agent: Brauzer 2/0\r\nConnection: Close\r\n\r\n",
                        'method' => 'POST',
                        'content' => $data                
                     )
    )
);

$contents = file_get_contents("http://site.ru", false ,$context);
echo $contents;
?>