Es gibt htmlspecialchars(), das immer richtig arbeitet, solange du "" für die Attributbegrenzung nimmst.
Nicht wirklich - ENT_NOQUOTES darf nicht gesetzt sein ;)
Aber ansonsten hast du recht - da <, >, ", ' und & in sämlichen unterstützen Zeichencodierungen an derselben Stelle liegen, ist es bei htmlspecialchars() tatsächlich egal.
Bei htmlentities() muss man hingegen schon aufpassen.