A peu près tout, c'est un langage très complet. Rien ne t'empêche de l'utiliser plutôt que des langages orientés objet.
C'est un langage relativement bas-niveau, très utilisé dans les applications embarquées où l'espace mémoire et la puissance de calcul sont comptées. Même dans certaines applications non embarquées où l'optimisation des ressources peut parfois également être un critère.
Pour l'apprentissage, je trouve ça bien de commencer avec un langage bas-niveau comme le C, ça permet de mieux se rendre compte de ce qu'il se passe réellement dans la machine et donc de mieux voir ce que l'on fait.