Não lembro onde, mas uma vez já ouvi que o C não é exatamente uma linguagem de baixo nível, mesmo sendo bem parecida com uma ela ainda não te obriga sempre a gerenciar memória na mão, acho que esse era o motivo. Mas realmente C é um ótimo ponto de partida para aprender programação
C é baixo nível, mas é mais fácil e prático que assembly no geral. Como C tem que ser portátil, você não escreve instruções de assembly diretamente, porque cada arquitetura vai ter suas próprias instruções.
Mas se você precisar, você pode escrever instruções de assembly no C. Já vi fazerem isso em códigos de jogos de N64, onde a performance do código C não é suficiente. Exemplo:
__asm__("movl %edx, %eax");
Mas pensa o seguinte, o código do kernel Linux é majoritariamente feito em C, e kernels são coisas extremamente baixo nível.
C é basicamente um assembly portatil se bobear