Scusa Daniele ( giusto? ),

sono d'accordo che per usare le funzioni mb_string dev'essere caricato (se sei su windows) oppure installato e caricato (se sei su linux/unix) il modulo mb_string, la ritenevo una cosa scontata (forse sbagliando ma finora non ho ancora trovato un host che non lo mette a disposizione).

Parlando di un tema molto generale (cioè non sappiamo a che lingua si riferisce lilo) ho preferito tirare in ballo direttamente utf8 che ci consente di gestire tutti i caratteri, anche quelli non rappresentabili con la tabella ASCII (normale o estesa) o per mezzo delle entità HTML.

A questo punto le considerazioni che hai fatto sui template perdono senso. Se ti basta sfruttare le entità html e carattery single-byte allora cosa te ne fai di utf8?
Non è detto che utf8 serva solo per quello che riceviamo in input dagli utenti, anche il resto potrebbe aver bisogno di essere muti-byte.
Inoltre io ritengo che se si imposta UTF-8 sia inutile codificare con le entità HTML caratteri che sono già presenti e fruibili nel set di caratteri che utilizziamo.

Infatti tu dici che
I template inviati al browser, quindi tutti i dati che il browser riceve, in buona parte sono "statici" ... questi dati dovrebberò essere predisposti per QUALSIASI codifica, ovvero dovrebberò essere inviati utilizzando la tabella dei caratteri ascii base, quindi i primi 127 caratteri, codificandoli con la convezione HTML per la codifica di caratteri speciali (vedi lettere accentate o caratteri speciali)
ma purtroppo non è vero che con ASCII e le entità HTML puoi predisporre per QUALSIASI codifica e quindi torniamo al punto di cui sopra.

Quindi come si deduce non è vero che tutto il resto non è importante e non è vero che "fa differenza SOLTANTO come vengono salvati nel db".

perché conviene usare UTF8? perché, senza fare ASSOLUTAMENTE NULLA, si da la possibilità di avere il proprio software utilizzato da chi non usa codifiche standard ... questo può essere utile come non potrebbe esserlo ... ma alla fin fine è una cosa in più
Mi pare una visione un po' riduttiva delle funzioni di utf8.
Utf-8 va utilizzato per rappresentare tutti i caratteri che diversamente non sarebbero rappresentabili e/o sarebbero rappresentati in modo differente tra differenti set di caratteri.
Inoltre non sono d'accordo sul fatto che non serve fare ASSOLUTAMENTE NULLA. E' proprio facendo ASSOLUTAMENTE NULLA (limitandosi ad impostare il content encoding) che alla fine ci si ritrova con i punti di domanda o con caratteri imprevisti.
Impostare UTF8 come encoding prevede che si vada in output con utf8 e per essere sicuri di farlo sempre è utile utilizzare le funzioni di conversione. Chiaramente non è sempre indispensabile, tanto più quanto si ritiene che utf8 non è indispensabile ed alla fin fine è "una cosa in più".