I think I have finally understood how the two start_index and end_index parameters (trav/elev gun_anim groups) are working for sub guns. Their format is in seconds, and they determine the actual min/max training and elevation angles.
Imagine that gun's animation, as previewed in Goblin Editor, was as a movie. We see it in a loop, but in reality it got a start and an end. If we wanted to set gun's min elevation, we should set as start_index the offset in second from the start of the movie corresponding to the desired minimum elevation angle. Likewise for maximum elevation. We should then set the min and max elevation parameters according to the agles that start and end idexes are pointing to in the animation.
For what I've seen min/max settings, determine the aiming of the gun when manned by the crew, whereas the trajectory of the fired shells is aligned with muzzle's z axis. If min/max settings are not matched with start/min index settings to represent the same (or very similar) angles, the gun gets crazy, because AI sees a different elevation than actually is.
If for example, end_index points to an elevation in the animation which is lower than the one set as max gun's elevation, our gunner will aim regularly below the target. Likewise, if max elevation is lower than what would be expected after compairing end_index with gun's animation, AI will aim on top of the target, no matter what is crew's experience.
This explains why, if we reduce max elevation without adjusting end_index, we obtain an opposite result than expected: far from having a reduced max elevation, the gun will be always over-elevated by the crew, whereas its elevation range will remain unchanged