el lenguaje ensamblador es un lenguaje de bajo nivel con los que originalmente el fabricante recomienda, es la forma de expresar las instrucciones de forma mas natural, pero que es muy cercana al lenguaje real de los micros, cada instruccion corresponde a otra en codigo maquina que el micro es capaz de interpretar. el lenguaje consta de eriquetas, codigo de operacion, datos y comentarios.
El lenguaje C es de alto nivel y es mas amable al programador porque con una linea se pueden expresar muchas lines en ensamblador, sin embargo una desventaja podria ser que al compilar el lenguaje c salgan mas lineas que son inutiles en ensamblador. o estan de mas.
Yo manejo el ensamblador porque es la forma mas basica de comunicarse y se me hace mas facil, el el pic te encuentras con 35 instrucciones (en micros de gama baja), pero para programar en C necesitas un compilador que transforme eso a codigo maquina. no se si me explique.
Para programar en ensamblador solo necesitas el mplab y ya.