Partendo dai primi due la loro differenza principale è che il compilatore traduce un intero programma dal linguaggio sorgente al linguaggio macchina mentre l' interprete traduce e immediatamente esegue il programma istruzione per istruzione. I linguaggi nuovi oramai utilizzano tutti gli interpreti.
Poi passiamo agli altri tre:
Tu quando scrivi un programma scrivi un programma sorgente(cioè in formato testo) che viene trasformato prima in assembler e poi in programma oggetto(cioè in formato binario)
Ora che abbiamo il file oggetto(possono essercene anche di più) interviene il linker che unisce questi file oggetto per trasformarli in eseguibili aggiungendo le informazioni necessarie per essere eseguito dal sistema operativo.

Questo più o meno a grandi linee quando scrivi un programma