Handoko already gave you some good links, however those would perhaps not answer all your question or discuss all options.
If I have some code I want run after the main form has been created but the form is displayed, where do I put it?.
There are several options, alll have their pro's and con's.
For example, you could use the onShow event, but that fires every time your form is 'shown'. If that event only happens once for the duration of your application then that is fine, otherwise you would have to account for your code to run oly once (that is, if your code is only suppose to run once).
Another option is using the Application onidle event, again you would have to account foronly running the code once as the onidle event is fired quite a lot.
Using a timer on your form is also an option. you would then put your code at the ontimer event and disable the timer once your code has run.
I'm sure i forgot to mention many other solution or approach. It kind of depends on what should be done exactly where and if it fits your program's flow.
If I used multiple forms, is there a formx.show or something simliar? Seems to me like there must be a long list of functions / methods / procedures that can be used that I cannot find reference to in the free pascal / Lazarus documentation. Thanks
Look at your applications .lpr file. There is where your application object gets initialized and forms are created and added. Do realize that the code you see in there can be manipulated with your project's settings, e.g. you can tell your project which forms should be created automatically for you (or not).