htmlspecialcharts() lo dovresti utilizzare quando stampi la stringa che l'utente ha inserito, es: supponiamo tu voglia far lasciare dei commenti ad un utente, il commento lo inserisci così com'è nel db, poi in fase di stampa dei commenti nella pagina html, utilizzi htmlspecialcharts() così sei sicuro. E' inutile memorizzare la stringa che ti restituisce htmlspecialcharts() nel db. Almeno questo è ciò che penso io.

Per le sql injection ci siamo.

Comunque ti consiglio di leggere i seguenti articoli.
http://www.html.it/articoli/protegge...l-injection-1/
http://www.html.it/articoli/tecniche...e-scripting-1/

e questa guida
http://www.html.it/guide/guida-sicurezza-di-php/

che non fa mai male.