Une "liste chaînée", c'est juste une façon en C d'implanter la structure de données "liste" (cf le paragraphe 1 de http://fr.wikipedia.org/wiki/Liste_(informatique) ).
On utilise généralement des listes lorsque qu'on est amené à parcourir les éléments qu'on veut stocker de façon "linéaire" (un par un, de gauche à droite). Parfois, il faut pouvoir parcourir de gauche à droite, et de droite à gauche (par exemple si on veut chercher à la fois le premier et le dernier élément vérifiant une propriété). Dans ce cas, pour pouvoir parcourir la liste dans les deux sens, on peut utiliser en C des "listes doublement chaînées".