Nie musisz uciekać przed znakiem dolara. MySQL nie traktuje tego znaku specjalnie, a PHP rozpoznaje go tylko w kodzie źródłowym, a nie w wartościach łańcuchowych (chyba że wywołasz eval na sznurku, ale to zupełnie inna puszka robaków).
Musisz tylko uciec z % i _ jeśli użyłeś danych wejściowych użytkownika jako argumentu LIKE i nie chciałeś, aby użytkownik mógł używać symboli wieloznacznych. Może się to pojawić, jeśli przetwarzasz formularz wyszukiwania. Nie musisz go używać podczas przechowywania w bazie danych.
Nie musisz używać htmlspecialchars podczas uzyskiwania dostępu do bazy danych. Powinno to być używane tylko wtedy, gdy wyświetlasz dane użytkownikowi na stronie HTML, aby zapobiec wstrzykiwaniu XSS.