Du behöver inte fly dollartecken. MySQL behandlar inte det tecknet speciellt, och PHP känner bara igen det i källkoden, inte i strängvärden (såvida du inte anropar eval på snöret, men det är en helt annan burk med maskar).
Du behöver bara escape % och _ om du använde användarinmatning som argument för att LIKE och du ville inte att användaren skulle kunna använda jokertecken. Detta kan dyka upp om du bearbetar ett sökformulär. Du behöver inte använda den när du lagrar i databasen.
Du behöver inte använda htmlspecialchars när du kommer åt databasen. Det bör endast användas när du visar data för användaren på en HTML-sida, för att förhindra XSS-injektion.