Código:
 menu_adicionar (&et[10]);
  Al mandar esto le indicas al compilador que envias el elemento 10, el cual no existe, tienes elementos del 0 al 9, recuerda que la definicion de los arrays es de 0 a n-1  
Código:
 void menu_adicionar (struct etapa *et[10])
  No es necesario que le mandes el tamaño del array  
Código:
 void menu_adicionar (struct etapa *et[])
  Algo similar esta pasando con las otras funciones 
Es de un vistazo lo que veo...