I'll take a shot at a couple of your questions,
1. Whatever API you feel most comfortable with is the best API to use for GUI creation. Creating a GUI in Win32 can be a bit tiresome due to the age of the API, but everything you posted is well within the scope of the API. I may be mistaken, but most of the GUI libraries on the Windows platform build, and extend on the base functionality provided by Win32.
4. There are a few ways of doing it. You could dedicate a quad per letter, or you could try your hand at vectorized text.
5. How I normally do it is to render it last as you said. But then use a special pass through vertex shader that omits any special world space transformations, and keeps my HUD elements in NDC space. If your talking about GUI elements on monitors, and displays In Game. You may want to look into render to texture.