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