You also have a kinda C/C++ choice here, not only API & MFC.

You can go C code with WinAPI - no runtimes, small executables and a LOT of hard work. Very frugal in terms of size, excellent in speed. This is the way I choose.

You can go C++ and STL, MFC - great, but fat executables are a result. Slight overhead.

MFC does bloat your code greatly, just like VB. From my personal experience, every VB app i created (and nearly every one I used) was unstable. MFC is far more stable than VB, althrough mysterious errors are common indeed.