David : to answer your first question, DNN is an ASP.NET application, so it follows all the normal rules of an ASP.NET page lifecycle. It's always good to review this if you're building a module, even if you've studied it in the past.
Without knowing your exact requirements, you may find it difficult to achieve what you like with an ascx file. The order that these get executed in DNN depends on the order they are placed onto the page, which is something you don't have control over. You can, of course, create a usercontrol which exists on each module control in your module, and you can run initialisation code within that. It's not clear from your post whether you mean first run (ie, after installed) or initialization on each run (ie, every time page is called).
You might also look into a HttpModule, which will be called for each request to the asp.net application (ie, for each page in DNN). This might be too much for your needs, or might suit perfectly. Bear in mind you won't have any page context within the HttpModule code, but if your initialisation needs are simple, this might work. You woudl also have to have a built-in filter for your http module so that it only runs on requests that it needs to (ie, dnn pages). It's easy to forget that asp.net requests are for more than just .aspx extensions : They will run on .axd, .ashx requests as well.