Since I'm new to calling hooks and all that, what happens if I hook a function that's already hooked by another addon?
If you've played nicely, you've called the original function at the end of your hook, possibly with changes to the original arguments (this is often called a "detour") and processing goes on as it normally would have, including other hooks by other addons. (Yes, load-order can cause conflicts) Ace has a special method (CallHook) that does this for you, which should be used in most cases.
I have an idea that you should only have to press your button once to even cast the spell. (The addon cancels the wand for you, and then sends along the arguments you sent for casting the spell, and casts it when you're done)
Possibly, but the auto-cooldown on wands makes this problematic.
Bad thing about something like that though Unchained, particularly as a mage (and in PvP), you can't 'close gaps' between spell casting by constantly mashing the next spell's button during the casting time of the current spell.
/script if not CastingBarFrame:IsVisible() then SpellStopCasting() end;
Will stop your auto-fire and attempt to cast your highest level of RoastTheBadguys, but will NOT interrupt any action that displays a casting bar, ie. you can still spam the key (as you would probably have to anyway with the autofire cooldown).