Bueno, a ver si las entendi todas:
1. La puedes usar cuando insertas los datos, o cuando los recuperas. Tu decides como deseas hacerlo, yo acostumbro a transformar los caracteres cuando los recupero de la base de datos (depende el caso).
2. htmlspecialchars convierte solo ciertos caracteres a sus entidades HTML, mientras que htmlentities convierte TODOS.
http://www.php.net/manual/es/functio...ecialchars.php http://www.php.net/manual/es/function.htmlentities.php
3. xD No es una pregunta ...