I don't know exactly how Pulimi works, but I have some experience with Terraform (I use it on my last project as a corporate employee).
The point is that generally you define a desired state and ask Terraform to do all it can to create/modify the corresponding infrastructure. And for that it analyzes your code, checks that everything is OK and proposes you a "plan" which describes what Terraform will actually do: create new resource, deleting some others or just modifying some. Terraform then asks you if you want to proceed and then actually do the job. Of course, you can tell to Terraform to apply changes automatically without asking, if you are very confident about you code or don't care to break things, but generally this is desired thing to be asked because of the tricky nature of infrastructure management.
So I guess the scenario "create something, wait a bit, create something else" is not very common and is actually "not in the spirit". But if this use case is really needed, if I recall well there are some trick to allow doing this kind of pause. In the definition of the first resource you add a script that sleep 60 seconds, maybe with some monitoring, and make the second resource depends on this resource, which will make Terraform wait the end of the script before creating the second resource. The paradigm is to define resources and dependencies.
For loops, there is something that allows you to create a set of ressources with a single definition. I used it to generate thousands of VM. In fact you have a series of tools for "loop/conditionals" at the language level, but always in a spirit of "templating".
But after a bit of practicing, I felt sometime that I would have prefer to code things with a general purpose language. For things like getting env vars, managing some files, etc. I guess it is what Pulumi is about, and I am very curious about it.