A livello di base le estensioni mysql, mysqli e PDO rispondono tutte alla domanda come faccio a parlare con il database? Tutti forniscono funzioni e funzionalità per connettersi a un database e inviare e recuperare dati da esso. Puoi usarli tutti contemporaneamente stabilendo più connessioni al database contemporaneamente, ma in genere non ha senso.
mysql* è un'estensione molto semplice che fondamentalmente ti consente di connetterti al database, inviargli query SQL e non molto altro.
mysqli migliora questo (come suggerisce il nome) aggiungendo query parametrizzate e poche altre cose nel mix.
PDO è un'estensione che astrae diversi driver di database in un unico pacchetto, ovvero consente di utilizzare lo stesso codice per connettersi a MySQL, Oracle, MS SQL Server e una serie di altri database senza la necessità di utilizzare database specifici estensioni o riscrivi il tuo codice quando cambi database (almeno in teoria). Supporta anche query parametrizzate.
Se sai che utilizzerai esclusivamente MySQL, mysqli è una buona scelta. Soprattutto perché puoi usarlo in modo procedurale, quello a cui sei già abituato dall'estensione mysql. Se non hai familiarità con OOP, è utile. Altrimenti, PDO è un bel connettore di database flessibile orientato agli oggetti.
* Tieni presente che l'estensione mysql è ora obsoleta> e verrà rimosso in futuro . Questo perché è antico, pieno di cattive pratiche e manca di alcune caratteristiche moderne. Non usarlo per scrivere nuovo codice.