el tipo typedef te permite definir con un nombre un tipo de vble concreta, por ejemplo:
typedef struct
{
int a;
float b;
}st_estructura;
lo que haces es que estructura sea un tipo struct con dos vbles dentro, un int a y un float b. Así desde tu programa principal podrías declarar una variable de esta forma:
void main()
{
st_estructura una_estructura
}
De esta forma evitas tener que declararla de esta forma:
struct estructura una_estructura;
Ahora bien el caso de tu estructura es especial, puesto que dentro de la propia estructura tienes que referenciar la propia estructura. Cuando defines la estructura con un tipo typedef, hasta que no terminas la estructura y le pones un nombre el compilador no sabe el nombre de esa estructura, así si declaras la estructura de la siguiente forma generarías un error:
typedef struct
{
int a;
st_estructura *sigte;
}st_estructura;
El error se debe a que hasta que no se termina de definir la estructura el compilador no sabe el nombre de esta, por tanto cuando se hace st_estructura *sigte el compilador aun no sabe qué es st_estructura.
Para solventar este problema se define en la estructura un nombre al principio de tal forma que puede ser referenciada antes de terminar con la definición:
typedef struct estructura
{
int a;
struct estructura *sigte;
}st_estructura
En este caso el compilador no da error porque antes de terminar la estructura ya le habías dado un nombre. Espero que te sirva de ayuda, Un saludo