If you are comfortable with VBA, stick with it for now - it's a good way into learning how autocad works. With that said, we consider VBA a non-professional API for AutoCAD and we prefer developers move to C# or VB.NET.
To answer your questions: Xrecords don't need an external DLL to use, so there's no worries there. They are built-in container objects, so use them as is. As far as designating a VBA class module as the object definition (deriving from XRECORD?) I don't believe that's possible.
Creating an XRecord and saving it to the DWG will give you your persistence. What you need to decide is where to save it - if it's to be associated with an entity then you will need to create an Extension Dictionary for the Entity and set the Xrecord in there. If it's to be a general container, one that saves drawing settings, etc, then you need access to the Named Objects Dictionary, and that's where you will set the Xrecord.
Using XData is absolutely fine! Xrecords and Xdata do the same thing, just in different ways... I recommend you take a look at this blog http://adndevblog.typepad.com/autocad/2012/07/the-right-tools-for-the-job-autocad-part-1.html
Also, check out the DevTvs amd labs here http://www.autodesk.com/developautocad