Matt,
the form definitions are contained in a .ODC file - think of it like a resource DLL for an ObjectARX routine. The interaction between AutoLISP and AutoCAD is handled by the OpenDCL.arx (currently versions 16 and 17). So an "application" would have 3 files: MyApp.lsp, MyApp.odc and OpenDCL.16.arx. The arx file contains a load function called from lisp: (Odcl_Load_Project "MyApp.odc")
I know it sounds like a lot of files but the benefits are unbelievable!