Visual Basic for DOS
Although it shipped after Visual Basic for Windows 1.0, this version was more a continuation of QuickBasic than a radical change. It included a form designer and a library that supported character mode windowing and controls. This support was entirely optional, and it could function as a regular QuickBasic compiler simply by not using the provided libraries. The library could be used as a statically linked library, or binaries could depend on a companion executable, VBDRT10.EXE. Under the covers, it was a new version of the basic compiler, and modules were linked via the regular segmented executable linker. Unlike its Windows counterparts, it could therefore link C and Basic code into a single executable.
Visual Basic for Windows (16-bit)
Visual Basic 1.0 for Windows was released in 1991 supporting Windows 3.0. Although it could compile applications into an executable, the executable was really comprised of P-code that was interpreted by the mandatory run time library, VBRUN100.DLL. It was revolutionary for its time in allowing point-and-click UI construction, and a relatively simple language to script together interface actions. Given the demand for Windows applications, the relative simplicity of the tasks, and the relative complexity of coding for Windows in native C, Visual Basic proved to be extremely popular.
Among other things, Visual Basic 1.0 introduced the concept of a VBX control, which was a DLL that provided a UI element that could be interacted with via properties and methods. Unfortunately, Visual Basic could not produce DLLs itself, so it proved a good place to consume reusable components but could not provide its own.
Visual Basic 2.0 was released in 1992 and continued to support Windows 3.0. It included UI refinements, such as the introduction of a floating window to control the properties of UI elements, as well as more foundation support such as supporting OLE containers and MDI. It also separated between a standard edition, for developing Windows applications, and a professional edition, which included database support for line of business applications. Applications written in Visual Basic 2 required a new run time library, VBRUN200.DLL.
Visual Basic 3.0 was released in 1993, including support for OLE2. Applications written with it required VBRUN300.DLL.
Visual Basic 4.0 was a release that included both a 16 bit development environment and runtime, along with a 32 bit development environment and runtime. The goal was to allow applications to be ported to 4.0, and from there to Windows 95.
The 16 bit version of Visual Basic 4.0 added support for OLE custom controls, or OCX controls, later renamed ActiveX. Unlike VBX controls, which could be instantiated from anywhere, OLE controls required registering with the Windows registry (at the time, reg.dat.) This meant Visual Basic applications using OLE controls really required explicit installation, and could not simply be copied and executed.
The 16 bit version of Visual Basic 4.0 retained support for 16 bit VBX controls to be used inside projects.
Visual Basic for Windows (32-bit)
The 32 bit version of Visual Basic 4.0 dropped VBX support in favor of OLE custom controls. This meant there was no path for existing applications using custom controls to 32 bit. Since a custom control was an in-process DLL, migrating to 32 bit would always require updated controls, but changing the interface meant that the controls required much more updating than a 32 bit port of VBX.
In addition, the 32 bit version exposed a lot of new Windows 95 UI elements to applications. These were unavailable on 16 bit platforms, and building an application which looked like a Windows 95 application really required them to be used.
Visual Basic 5 shipped in 1997. After completing the transition to OLE custom controls, it became feasible for Visual Basic to author controls that it could also consume. This release was available in a "Control Development Edition" which was made freely available, that could not generate applications, only custom controls.
Visual Basic 6.0, released in 1998, was the final version of the traditional Visual Basic language. Although the version 6.0 release was relatively minor, its status as the final release ensured it would be used for a very long time.