SPA e MPA
La differenza principale tra una SPA e una MPA è che con un'applicazione a pagina singola, tutte le richieste avvengono all'interno del ciclo di vita di una singola pagina HTML. Potresti essere in grado di vedere diverse visualizzazioni, persino vedere diverse "pagine" dell'applicazione, ma tutto il rendering avviene all'interno di una singola pagina Web HTML. Ciò ha il vantaggio di mantenere lo stato dell '"applicazione" in un unico ambito. Pensa a un'applicazione come messenger.com, dove ci sono ancora molte parti mobili, ma non devi mai lasciare una pagina.
Un MPA, al contrario, vedrà l'utente visitare più pagine HTML distinte. Tutti gli script verranno rieseguiti quando la nuova pagina HTML viene caricata e qualsiasi stato deve essere mantenuto nella sessione o nella memoria locale. Questo è più simile al modello di stackoverflow.com.
Lato client e lato server
Puoi avere semplici app lato client che eseguono tutto il rendering e la logica con Javascript e che raggiungono il back-end solo per le operazioni API. Puoi anche avere delle semplici app lato server (il più comune con PHP, direi) in cui tutto il codice HTML e il contenuto sono pre-renderizzati sul server prima di essere scaricati dal browser web.
Il rendering lato client e il rendering lato server sono generalmente mescolati, però. Ad esempio, stackoverflow.com esegue il rendering della pagina Web con le domande e le risposte su di esso sul lato server e la invia all'utente. Il rendering lato client viene quindi utilizzato per AJAX upvote / downvote, aggiungendo nuovi commenti e per visualizzare in anteprima le risposte alle domande nel browser.
Spero che questo sia utile. Hai ragione nel dire che i concetti sono simili e possono anche essere mescolati l'uno con l'altro.