Tout d'abord, si vous êtes surtout intéressé par le 1, je commencerais par lire les sources Python des différents modules (et ne pas sauter directement au C). Chaque fois que je me suis retrouvé à lire le source de certains modules, j'ai toujours appris de nouvelles choses sur la programmation Python.
Deuxièmement, si vous essayez de mieux apprendre le C, je vous suggérerais personnellement quelque chose de complètement différent : programmez dedans. La simple lecture statique du code source est no ne vous fera pas mieux comprendre le langage C (ou du moins, c'est une approche limitée ; cela peut vous faire progresser un peu, mais la lecture d'une source ne peut pas tout vous apporter).
Après avoir programmé au moins un projet de taille modérée en C, puis Je commencerais par regarder les sources de Python. C'est vraiment le seul moyen de mieux connaître le C, et je pense vraiment que lire les sources C de Python sans bien connaître le C ne vous mènera pas très loin.
Une idée pour un projet C
En fait, voici une idée de projet en C : écrire un interpréteur Python en C. Évidemment, il ne sera pas du tout complet, et c'est un projet assez difficile, mais si vous vous concentrez seulement sur certaines parties du langage, je pense que c'est une bonne idée.
Non seulement il vous aidera à apprendre le C, mais il vous aidera aussi à mieux comprendre Python. avant en regardant la source : vous devrez avoir une compréhension plus approfondie d'une lot de choses en Python, vous comprendrez les compromis de conception dans le fonctionnement de Python, etc.
Ensuite, lorsque vous lirez enfin le code de Python, non seulement vous comprendrez pourquoi certaines choses fonctionnent de cette façon, mais vous apprendrez probablement beaucoup de techniques C vraiment cool qui résoudront les problèmes que vous aviez.