The differences are huge, at least with real VB and VC++ both of which are actually obsolete. .net has replaced both. The syntax has changed dramatically and there is little backwards compatability with either.
VB - Event driven, probably the best Interface from a programmers standpoint ever designed up to VB6. With VB6 they destroyed the help system which was usefull and excellent replacing it with a clunker that I never bothered to install since it was worthless. VB6 also forced you to bind data to controls which caused major havoc when you wanted fine grain control over what was going on. A major step backwards causing VB6 software to lose functionality and reduced a programmers ability to trap errors. No good VB programmer up till VB6 used bound controls.
VB syntax is based on the Basic language. It's goal, one that was achieved was to let the programmer work on the logic and reduce syntax issues. Basic was origionally written as a teaching language. It's design was to be as intuitive as possible and this goal was achieved. When coding with modern Basic varients like Gambas, VB, PowerBasic you spend little time on syntax and almost all of your time on logic. Ramp up time for a proffessional coder was months not years. A coder with apptitude could be productive sometimes in as little as 3-6 months and there are literally thousands of apps out there doing essential things written in VB by complete programming novices.
Syntax is two fold in VB. The main logic in a well written VB app resides primarily in the modules with calls to modules residing in the forms that comprise the GUI. However there are many VB apps that are without a single form and have no user interface at all. I've written many myself. Most VB apps have a user interface that you design doing drag and drop and then customizing by simple GUI edits on the components on a form. Designing a GUI is trivial. Making it look purty if you have artisitic talent again trivial.
The syntax itself supports primitive objects with a very intuitive layout. Someproperty.object = x is an example. The dot structure with the objects makes using OOP simple and easy. VB does not support super classing or other fancy OOP methods however.
The executable outputed by VB however was horrible. It was huge, buggy and dependent on a host of dlls. Another issue was starting with VB6 they no longer included the version number in the run time dlls. So VB6 apps clobbered apps written in prior versions of VB. The only possible reason for doing this would be to force people to upgrade to VB6. The real effect was to drive people away from VB. Many comercial apps written in VB were ported to mostly Delphi in large part because of this change. Many programmers like myself dropped the VB language because of VB6 and the obvious move by the world to web based development.
C++ and VC++ are different animals. Do NOT confuse them. VC++ looks alot like C++ and supports many of the same features but has major differences. The biggest being that VC++ is not a truely compiled language. You have to have run time libs to run VC++. The vcrtlxxxx dlls are some of the run time libs necessary for VC++ to run. Again dll hell was often accomplished as you could and many people did modify this run time lib. The name had to be the same however. The worst I've ever seen was a machine with 65 copies of vcrtlxxx and 12 distinct copies of it. 7 of which after a week of experimentation proved to be essential to the apps installed on the machine.
Also do not confuse VC++ with .netc++ those are also different animals. .net vb and .net vc are very similer in syntax and really just different front ends on the same backend.
C++ in general supported OOP but you could write module level programming just as easily. C++ the non-Microsoft versions is a compiled language. Various different GUI generators sit atop vendor specific versions and third party GUI generators sit atop these same versions. The most commonly used C++ today is GNU C++. GNU however has no GUI or IDE and there are dozens of IDEs and GUI generators for it. Borland and Microsoft currently put out C++ like products but do not support true C++ at all any more.
In C++ you have complete control over you application. Everything including memory management is your responsibility. Most memory leaks are applications written in C++ where the programmer(s) forget to deallocate memory, have an error in thier program where memory is never deallocated or use code from others, usually in widgets and objects they themselves never see a line of the code that cause such memory errors. In .net c++ if I remember correctly it has adopted the Java memory handling model. That means no more pointers or such memory management. Buffer overflows are another problem common to apps written in C++ and C++ like languages. With C++ the handling of arrays and buffers is purely up to the programmer. If there is no logic in the program to deal with input that is larger than the space allocated for the data then that data is dutifully written over parts of the program itself. Thus it can be possibly executed by the application itself if the overwritten data is carefully crafted. This is not a problem with apps written in other languages except when the buffer overflow problem is built into objects that language uses and were written in C++ or a C++ like language.
Syntax wise .net is more related to Java than C++ from what I've heard. I imediately dismissed the whole .net thing the day it was released. .net has also been slow to be adopted. I think many companies are tired of porting from one Microsoft language to another to another. Think about it. First it was Quick C that Microsoft wanted everybody to use. Then they dumped Quick C without warning and told everybody to use QB and the proffesional version of it called PDS7. Many people did. Then they dropped support for that and told everybody to go to Foxpro. So tens of millions of lines of code were written in Foxpro Then along comes VB. Microsoft tells everybody to dump Foxpro and use VB. Foxpro languises almost completely without support from M$ until most people are forced to abandon it and go with VB. Billions of lines of code were written in VB. Then Microsoft dumps it and says .asp is the way. Now they've dumped .asp and .net is the way. Now all that VB code is worthless. This is expensive, a waste of time and has no benificial purpose. Worse you know they'll dump .net a few years from now and you'll have to do it all over again. Why pump the money into it?
So to answer you question. I'd recomend not learning either VC or VB. Both are no longer supported. .net is a waste since the only people who'll be supporting .net a few years from now will be the mono project. Learn Java instead. It'll be around long after .net ceases to exist. Java programmers get paid a whole more as well. Learn C++ and if you get good at it you can write device drivers and other low level apps. You will always have a job if you know real C++ and on the nix side of the world it's always handy to know some C++. Just don't use VC or .net c++ it's not the real thing.
PHP is a booming language. The majority of the web today is written in PHP. Flexible, easy to use, well supported, tons of classes and gadgets/widgets to use. Can be OOP or can be modular in nature. It will also be around long after the latest M$ fad. And the next M$ fad and the one after that. Learning Microsoft languages is a lesson in futility. They just go away from under you. Over the last 20 years I've become proficient in several Microsoft languages. Written millions of lines of code in VB, VC, MASM, Foxpro, QB/PDS7 and today it means nothing. All that experience is completely worthless. I finally had enough of the merry go round and jumped into web based development and switch to Linux. Now what I learn means something. That experience means something and isn't obsoleted in a short time just because there is a fad. When something I know is obsolted today it's because things improved, not changed just to change and force everybody to buy a whole new set of compilors. Microsoft's economic model depends on selling you the same thing over and over again. It also exists to make it just easier to quit writing your own code and use inferior but less expensive off the shelf software. To adapt your business model to fit somebody else's ideas. This is sad. It's done a great deal to kill the ability of programmers to make a living in the the US. So many shops that used to employ programmers gave up. They could not afford to hire somebody to completely rewrite thier code every few years. The associated bugs, projects gone bad have cost the economy billions. Each generation of the app producing less and less functionality and often less stability. Microsoft is not good for the IT industry in the US.and for years has been the worst thing to happen to it.