Sì SMTP è un protocollo standard per l'invio delle mail (come dire HTTP).
In Windows PHP può utilizzare solo SMTP per comunicare con mailserver, in Linux invece comunica direttamente.

Questo significa che ogni volta che usiamo mail() in windows si apre una connessione SMTP e c'è uno scambio SMTP, si chiude la connessione. Il che non è certo l'ideale...

Se però devo inviare migliaia di mail personalizzate poso usare le funzioni per i socket per aprire la connessione SMTP, inviare le mail personalizzate e solo alla fine chiudere la connessione. In sostanza creo il mio client smtp.
Questa soluzione, anche in Linux, è preferibile a chiamare mail n volte quante sono le mail da inviare.

Se invece le mail sono tutte uguali posso usare l'header bcc per inserire lì tutti gli indirizzi (a dire il vero non so se esista un limite al numero di indirizzi inseribili in bcc)