1. an ocx is a dll that hosts an activex control or set of controls.
2. activex controls are used in all sorts of apps. some are grids, some are buttons that someone might have made so that they can have buttons with weird shapes or more functionality than traditional buttons.
3. activex controls are made so that they can be used in any programming environment that hosts them. So you can make an ActiveX control in VB and use it in a Visual C++ project, or vice-versa (even foxpro, delphi,etc.)
4. the most basic things about making activex controls I can tell you are this:
first, figure out why you need this control. Is there already a free one out there that does what you need. If it's not free, is it more cost-efficient to spend the time to make it yourself, or to just purchase the existing one.
If you still feel you need to make your own, or just want to do it for the experience, the MSDN has plenty of step-by-step tutorials on making them. Hope this helps
BlackDice