Il y a un autre point qu'il est important de souligner, je pense : le fait que le C est un langage plus bas niveau que le C++. Quand on programme en C, on est beaucoup plus "proche" des composants d'un ordinateur.
C'est complètement faux.
Le C++ est aussi bas niveau que le C. Ou plus exactement, il va aussi loin pour attaquer le hardware. En revanche, Le C ne va pas aussi loin que le C++ sur les axes (oui, au pluriel) de l'OO (même si avec CLOS on peut avoir du multi-dispatch), du générique, de la méta-prog, etc.
Pour ces histoires de niveau, c'est des diagrammes de Kiviat qu'il faut voir.
Donc, si ça t'intéresse de savoir comment fonctionne un ordinateur à l'intérieur, je te conseillerais de plutôt te tourner vers le C. Ça peut même être une bonne passerelle pour apprendre un langage assembleur par exemple, qui est encore plus bas niveau.
Cela n'apprend en rien les détails de fonctionnement des micro-proc & cie. Le C apprendra les détails d'une pseudo machine qui n'existe pas vraiment. Pas des machines d'aujourd'hui (ni d'il y a 20ans) avec leurs niveaux de caches, les pipelines, les micro-assembleurs, etc. Ca, on peut en ressentir la présence, mais on ne peut pas l'attaquer sans jouer avec l'assembleur.
Sinon, comme d'autres: ce n'est pas l'OO qui fait la grosse différence entre le C et le C++. C'est la libération déterministe des ressources, le meilleur typage, la généricité, et anecdotiquement le support intégré de l'OO.
Ce premier point est aussi la raison pour laquelle moins je fais de C, mieux je me porte.
Après, il est aussi intéressant de connaitre le C que le latin (peut-être pas aujourd'hui, mais au XIIIe) : c'est un langage universel et toutes les communications entre langages différents passent par du C. Il n'y a que dans les mondes de la JVM, ou de .NET, ou du web que l'on va utiliser d'autres passerelles (ou de COM, CORBA… il y a longtemps).