Когда использовать htmlspecialchars(), а когда htmlentities()? В чем их различие?

Цитата из документации по функции htmlentities():
Эта функция идентична htmlspecialchars() за исключением того, что htmlentities() преобразует все символы в соответствющие HTML-сущности (для тех символов, для которых HTML сущности существуют).

Напомним, что функция htmlspecialchars() преобразует в HTML-сущности только амперсанд, кавычки и символы "больше" и "меньше".

Вот так различие выглядит на практике:
echo htmlentities('<Il était une fois un être>.');
// &lt;Il &eacute;tait une fois un &ecirc;tre&gt;.

echo htmlspecialchars('<Il était une fois un être>.');
// &lt;Il était une fois un être&gt;.