Secondo me non ha senso impararli come primi linguaggi di programmazione, sono inadatti ai principianti, poco produttivi ed in alcuni casi spingono verso delle worst practices da evitare quando si passa a linguaggi più "moderni".
Ha invece senso imparararli se si opera (o si intende/si è costretti a farlo) con codice legacy o con codice che deve essere necessariamente scritto in C (sistemi embedded, device drivers, etc.). Ma in questi casi le competenze necessarie per operare in quei contesti sono nettamente più "sostanziose" rispetto al conoscere la sintassi e le peculiarità del C.