Hola! El typedef define se usa para definir un tipo de dato creado por ti, por ejemplo un int significa un entero, y ahi tu estas definiendo un tipo de dato que es una estructura que se llama lista. El struct ficha *sig, crea un apuntador al siguiente dato de la ficha, pero como a mi me enseñaron las listas enlazadas, no es asi, a mi me enseñaron que era: struct lista *sig; y eso lo único que crea es el enlace al siguiente nodo de la lista. Espero haber aclarado tu duda.