haber str_replace() es una función que usas para cambiar en un texto dado ciertos caracteres definidos, lo que estás haciendo ahí es :
Código PHP:
$mensaje = str_replace("<","<",$mensaje); //reemplazas < por <
y así sucesivamente hasta ke llegas ha:
Código PHP:
$mensaje = str_replace("\'","'",$mensaje);
donde lo que haces es decirle al servidor que donde encuentre \ te lo reemplace por vacío.
en definitiva la estructura es: str_replace("<texto buscado>","<texto que se pondrá>","<todo el texto");
luego la funcion htmlentities() lo que te hace es transformar todos los caracteres en sus respectivos caracteres de html por ejemplo í te lo combierte en í y así todo el resto de datos.
Si necesitas verificar más de como es su uso mira los links que ACX_POISON te deja que van directamente a las explicaciones de php.net en línea.