1: without resorting to a timer, is there a function that is called after everything is created?
I do not know what exactly you indicate with "everything" but assuming you meant after all initialization sections have been processed then that would be the main program entry (main).
2:or is there a way to add these functions to the application process messages so they are delayed until it is fully started?
In the context of your description I did not fully comprehend what you seem to imply here. Sorry for that.
3: is there a better approach?
Depends on the situation. One scenario might be to not use the initialization sections but instead use f.e. a module to create your classes (in any which order the code requires it to do), use that module as your "first form" that gets created before anything else and create the other forms after that (before running your application). The same thing can be achieved by a custom class that initializes all other dependencies first.
In case you really have to rely on unit initialization then instead of creating the class at initialization, add the class names or init routines to a (ordered) list and let that list take care of things.
Other scenarios are possible, including fiddling with setjmp (but that usually screw with my brain, in the unlikely case I might actually have one
).
In the end it depends on the use case and what problem (if any) you are trying to solve.