Devi usare UTF-8 sia nel database (character set e collation) che nelle pagine PHP (indicare il meta tag Content-Type con charset=UTF-8 e - FONDAMENTALE - salvare il file con la codifica UTF-8 SENZA BOM). Latin1 è una codifica limitata e inutile quando devi creare pagine o applicazioni che contengono caratteri da tutto il mondo. Le stesse lettere accentate in italiano sono caratteri speciali. Invece di convertirle usando htmlentities() (che non ce la farebbe comunque a tradurre tutti i caratteri esistenti al mondo), è meglio abbandonare completamente la ISO-8859-1 e usare UTF-8. Tra l'altro l'uso di UTF-8 è sempre consigliato rispetto a qualsiasi altro set di caratteri poiché può rappresentare, SENZA convertirli in entità di carattere, centinaia di milioni di caratteri.
Poi ti consiglio di cercare in rete (l'avevo letto tempo fa e non ricordo il sito) riguardo i problemi di importazione e le rispettive soluzioni quando usi UTF-8.
PS: Attenzione! Quando imposti come set di caratteri e collation UTF-8, nel database le tue stringhe verranno memorizzate con i caratteri "strani". Questo è normale, perché dovresti impostare esplicitamente MySQL per usare nelle connessioni UTF-8 (il database continua ad usare Latin1 altrimenti). Quando però le tue pagine PHP (salvate in UTF-8) leggono i dati, li recuperano ovviamente correttamente. Impostare la connessione per l'uso di UTF-8, almeno in locale, ho visto che genera un problema con MySQL 5: se provi ad inserire una stringa manualmente da linea di comando (e penso anche da programma PHP) ti ritrovi con l'errore "data too long for NOMECAMPO". Questo penso sia dovuto proprio al problema della codifica. Quindi il mio consiglio è di lasciare la connessione impostata di default su Latin 1, ma di creare le tabelle e il database con UTF-8 (character set utf8, collation utf8_general_ci).