Ciao , più di "cosa serve " quella riga di codice , è meglio parlare di "cosa fa" , perchè l'uso di typedef non è indispensabile ....
Una lista , è formata da nodi concatenati tra di loro da puntatori , ciascun nodo non è altro che un puntatore a struct , quindi ti serve un puntatore ad struct , per creare la lista e per i nodi
codice:
typedefTNode*TList;
//Tnode rappresenta una struct , TList è un tipo puntatore a struct
TList lista ; //dichiari un puntatore a struct
TNode *lista ; // dichiari un puntatore equivalente
struct SNode *lista // ancora puntatore equivalente