It really is personal preference... that is all. I already knew C# before I started doing any reverse engineering, so I stayed with C#. There are also libraries like fasm and BlackMagic that a lot of people use that make working with external processes far easier in .NET.
On your question of how we find things... Just look at the InfoDump thread. Long story short, Blizzard accidentally released a debug build a couple times on PTR and in alpha so we have a decent list of functions... both their name and addresses.
http://www.ownedcore.com/forums/worl...mp-thread.html ([WoW][4.3.4.15595] Info Dump Thread)
Obviously other ways to do things, but this makes it far easier.