Microsoft has provided a number of debuggers. Visual Studio Debugger would be the most widely known one, while there is a less known tool set called Debugging Tools for Windows which is available for free. Even inside Microsoft, there were questions around why having so many debuggers, and which one to use.
A quick answer is, use Visual Studio for everyday user mode software development and put Debugging Tools for Windows aside. Visual Studio has a good feature set, it supports various kinds of debugging target (native, managed, script, interop, Transact-SQL, HLSL, etc.), and has a lot of cool features such like Intellitrace, JMC (Just My Code) and EnC (Edit and Continue). Besides, Visual Studio has a very good user interface, it also hides the low level details that most people wouldn't care.
Debugging Tools for Windows on the other hand, is a set of debuggers which includes WinDBG, a powerful debugger with a graphical interface and a console interface, as well as the console-based debuggers NTSD, CDB, and KD. These Windows debuggers (CDB, KD, NTSD, WinDBG) offer similar debugging capabilities which give you more details, and more control over the target. These debuggers only support native and managed target. Below are a few reasons for using the Windows debuggers instead of Visual Studio:
What debuggers do you use? Have you had problems while using the Visual Studio Debugger?