La "nueva" forma es la programación orientada a objetos en donde en lugar de pensar en las funciones que necesitas piensas en que objetos necesitas y es mas segura.
C es considerado un lenguaje de medio nivel porque los lenguajes de alto nivel son los lenguajes máquina o ensamblador donde programas con 1 o 0 en lenguaje máquina o con mnemonicos en ensamblador, y en C es lenguaje de medio nivel porque usas instrucciones mas parecidas al español o ingles no tanto a nivel máquina.
Un compilador es un programa que te traduce el codigo de un lenguaje de medio o bajo nivel a un programa de alto nivel. Es decir de lenguaje mas entendible por los humanos te lo cambia a lenguaje máquina. El compilador te traduce todo el código y lo revisa todo. Y un interprete te va traduciendo instruccion por instruccion
Las ventajas de un interprete es que es más rápido, pero es menos eficiente que un compilador ya que al traducirte linea por linea es mas dificil detectar los errores y no detecta muchos errores y no traduce de una forma eficiente
EL compilador como ventaja tiene que te traduce todo el código y te marca todos los errores a la vez y en un interprete tienes que ir corrigiendo errror por error, y aun asi en un interprete cuando ejecutas el programa aun hay mas errores. El compilador es mas tardado y ocupa mas espacio.
Las etapas de un programa en c no se cuales sean, me imagino que son estas:
Escribes el código, luego lo compilas y el compilador enlaza las librerias y crea un archivo .obj y luego juntas todos los obj y creas el ejecutable