I'll put in my 2-cents worth but don't give any guarantees as to accuracy.
#1 No. But how do we judge program efficiency. Your experience (1980's) was probably in the days when Ram was very expensive so any fat had to be trimmed from programs to make them fit, program efficiency was all important. Nowadays with zillions of gigs of Ram being so cheap it doesn't really matter if the programmer uses one or a hundred instructions to achieve the same result. Also, with the vastly improved speed of processors, no-one needs to care how efficient a program is as long as the desired result is achieved! The major cost in programming today is manpower.
#2 Yes. Basic, in all its versions, was written to run in a Dos environment (lets not get into the True-Dos/Emulator argument) so does not take kindly to modern Operating Systems. C, in all its versions, is fully compatible with most OS's.
#3 Not to my knowledge (which is limited). Visual Basic (VB.6, VB.Net etc.) is very good and might be considered as Basic with a Visual add-on. i.e. one can create windows as well as use the Basic programming commands. That description is open to all sorts of criticism
BTW QuickBasic is also compiled before running, even in the IDE.
We mustn't overlook Visual C++ or Visual C#. Express editions for VB 2008, Visual C++ and Visual C# are available for free download
here. I understand that Express editions are cut-down or lightweight versions of the read thing just to whet your appetite to part with a few dollars for the main attractions.
I have some programming experience with VB and C++ but like to slip back into the dark ages so sometimes use Assembler, Fortran IV and - would you believe it - Cobol. My preference is for Assembler when the opportunity arises.