typedef definisce un nuovo tipo (come int, char ecc).

Quindi se faccio

typedef struct {

int a;

int b;

}Ciao;

Definisco un tipo chiamato Ciao, che è una struttra con due interi al suo interno. Dopo questa dichiarazione puoi fare dichiarazioni tipo

Ciao Miavariabile

e hai dichiarato una variabile di nome Miavariabile che è appunto una struct fatta in quel modo.