Without using stop(), animations just queue up, thats inacceptable
With just using stop(), styles end up in the middle, screwing up the next fade, that is, stopping a fadeout half way through will cause the next fade in to not fade to 1
Using stop(false, true) will finish the animations, which worksaround the above problems, but the result is ugly, as a stopped fadeout will skip to the end, then fade in again from 0, instead of just fading in from the current opacity
The crazy complicated stuff, using a mix of fadeIn/Out and fadeTo, apart from being way too complicated, has the big drawback that the fadeTo-animations take exactly as long as the others, while it usually doesn't fade from 0 to 1, but only from, say, 0.7 to 1. Adding a calculation to figure out how long the animation should be relative to the current opacity would make this just more complicated.
fadeIn/Out can use opacity values defined in CSS stylesheets, while fadeTo requires the user to specify the opacity