You might take a look at the MessageManager extra. It's somewhat similar to what you're doing, though it has no custom DB tables.
If you end up rolling your own extra, I think ClassExtender might be a good place to start. If I'm understanding you, much of what you want could be accomplished by extending the modUser object (since all your data appears to be user-specific), and ClassExtender makes that fairly easy. It's also possible that any non-user-specific data you need to store could be handled by extending the modResource object, which ClassExtender also does.
As far as a comprehensive tutorial, I don't know of anything beyond the notorious Doodles tutorial. There's an overview of the API for interacting with MODX objects here:
http://bobsguides.com/revolution-objects.html.
If you're developing a complex extra, you'll want to look at
MyComponent, especially if you will be making a transport package from it.
You might also look at MIGX to see if it would meet your needs.