È necessario ogni volta che si desidera inviare dati al server con caratteri che non possono essere rappresentati in ASCII puro, come 'ñ' o 'ö'.
Che se l'istanza MySQL non è configurata per prevedere la codifica UTF-8 per impostazione predefinita dalle connessioni client (molte lo sono, a seconda della posizione e della piattaforma.)
Leggi http://www.joelonsoftware.com/articles/Unicode.html nel caso non sapessi come funziona Unicode.
Leggi Se usare "SET NAMES" per vedere le alternative a SET NAMES e di cosa si tratta esattamente.