Per iniziare, per l'esempio che hai postato è inutile utilizzare preg_replace(), ma è sufficiente utilizzare str_replace().
Poi, le PCRE richiedono dei delimitatori non alfabetici. Nel tuo caso, vengono interpretati i {}. Inoltre {} sono meta caratteri in PCRE per cui sarebbe opportuno NON utilizzarli come delimitatori.
Codice PHP:
<?php
$text = "
<h1>Il titolo e': {text}</h>\n
{hello}</p>
";
$text = preg_replace("#\\{text\\}#", "Ciao mondo", $text);
$text = preg_replace("#\\{hello\\}#", "hello world", $text);
echo $text;
?>