OCX is pretty much obsolete stuff. You will find the overview of related topics here:
http://en.wikipedia.org/wiki/Object_Linking_and_Embedding[
^].
It's all fundamentally based on COM, which makes more sense to learn well:
http://en.wikipedia.org/wiki/Component_Object_Model[
^],
http://www.microsoft.com/com/default.mspx[
^],
http://www.polberger.se/components/read/com.html[
^].
And DLL is a very general thing, a dynamic-link library, a PE file used as a library,
http://en.wikipedia.org/wiki/Dynamic-link_library[
^],
http://en.wikipedia.org/wiki/PE_executable[
^].
Basically, all the code comes in executable file, EXE or DLL, first are used as applications (contain entry point), second ones as library, but, strictly speaking the difference between them is somewhat fuzzy. COM components can be implemented in both. This is not a topic to cover in a Quick Answer. You can master COM if you read a book on it, or some mass of documentation, but hardly one article.
—SA