twinBASIC is designed to address a lot of this; a backwards compatible successor that adds numerous new and modern language and IDE features. What VB classic might have been if it had been developed for the last 20 years. Easier multithreading; it's all thread-safe and you can call CreateThread with no hacks, will get simplified native syntax for this next year. Already has native Unicode controls and Unicode everything, including the editor. Subclassing isn't quite as natural as C/C++ yet but it supports AddressOf on class members natively, so a huge improvement. All the new language features and compiler options definitely give you more control, though obviously not to the same level as C/C++.
I've been doing something about the API declare situation. Have been working on a package that provides most of them... currently there's about 5,000 of the most common ones covered from all the major system DLLs, and this is on top of the thousands of COM interfaces and coclasses brought in from my VB6 project for those. All you have to do is check a reference and they're all available, no need to copy them.
Lack of union support is still a major sore spot, but it is planned. As is first class pointer support.

This is the type of stuff that often goes waaaaay over my head. But the nerd in me still likes to read and try to learn from it.

What I have understood is that once I have completed the releases I'm currently working on, I will free up time to learn more about twinBasic.