I use the in-game keybind tool (make sure you tick "character specific keybinds" at the top of the menu though!).
I have all of my abilities bound to the keys around WASD, meaning I only have to move a short distance to hit necessary keys and spend less time standing in the fire.
I use combat spells mapped to Q, E, R and F, with and without shift (e.g Q and Shift Q are different spells). cooldowns and buffs etc. that I don't need to reach quickly or I can plan for I have clickable on the side of my screen.
I also have Shift + C bound to a slot on my action bar, but the ability in that slot changes for each fight eg. fights that need CC I'll bind Fear, fights that need fast movement I'll bind demonic circle: Teleport, and fights that need dispelling I'll use Sear Magic.
I used to use an addon called Bartender to bind these, but I got annoyed having to set it up on every computer I played on. Setting these up in the WoW menu keeps them bound to your character, rather than your PC.
The addons I use are:
Quartz Castbar - couldn't play a caster without this.
Auctionator - makes using the AH much easier.
Recount - useful for monitoring your dps, and testing which glyph/talent combinations work best on a target dummy.
Bigwigs/Deadly Boss Mods Don't stand in the fire. Tells you when a boss will use an ability. Invaluable when raiding.
Bagnon - effectively turns many small bags into one big bag.
Gathermate2 - Shows possible mat farming spawns on map - helps when levelling gathering professions.
Grid Raidframe addon, makes healing easier.
Cliquelets you bind spells to mouse clicks, so you can heal someone by clicking on their raidframe instead of having to target them first.
Loads of my friends use UI addons like ElvUI, Titan panel, or Xperl, so they might be worth looking at?
I know I've posted a whole lot about stuff that wasn't even relevant, but if I'd known about some of this while levelling it would've been a whole load easier!
Varwen