Un interprete es un programa que lee el código fuente escrito por el programador y sobre la marcha va traduciendolo a código máquina y ejecutándolo. La traducción no se guarda en ningún fichero. Cada vez que se ejecuta el programa, se hace la traducción, por lo que la ejecución suele ser algo más lenta.
Un compilador es un programa que lee el código fuente escrito por el programador y lo traduce a código máquina, sin ejecutarlo. La traducción se guarda en un fichero ejecutable. Una vez traducido (sólo se hace una vez), el código máquina se puede ejecutar directamente y va más rápido.
Casi todo los lenguajes actuales más conocidos son compilados. Java y los .NET son una "excepción", aunque tampoco llegan al nivel de interpretado, se quedan en una cosa entre medias de los dos.
Se bueno.