¿Qué significa preprocesamiento exactamente en el compilador?

Estoy tratando de entender la diferencia entre typedef y define. Hay muchos buenos mensajes especialmente enesta pregunta anterior en SOSin embargo no entiendo el post que dice.

#define es un token de preprocesador: el compilador nunca lo verá.
typedef es un token de compilación: al preprocesador no le importa.

¿Podría alguien explicar esto con un poco más de detalle? Estoy confundido con el término preprocesador aquí.

Respuestas a la pregunta(6)

Su respuesta a la pregunta