It does work, I believe. It just gives you a warning on how it's bad coding practice or something like that. Having the undefined <else> tag and what not.
Huh? You don't define else tags, they pass if the previous condition returns false...
Technically both examples posted are bad coding practice, but not for that reason. They're both organized poorly. You'd want to write it like this:
Code
<if spell="Ukko's Fury">
<if area="Abyssea*">
<equip when="precast" set="Ukkosabyssea" />
</if>
<else>
<equip when="precast" set="Ukkos" />
</else>
<equip when="aftercast" set="Wargaxefight" />
</if>
<if type="weaponskill"> wouldn't do anything at all unless you're 1) compartmentalizing and 2) handling sets for multiple weaponskills, in which case you'd optimally be using <elseif type="weaponskill"> instead and putting it outside the code I showed above. It's also cleaner to handle aftercast all at once, so what you should do is do away with <equip when="aftercast" set="Wargaxefight" /> within that section and handle your aftercast with the more common status check method at the end of the xml.