Using dependencies
To make sure things happen in the right order, you can specify in Puppet that one resource depends on another; for example, you need to install package X before you can start the service it provides, so you would mark the service as dependent on the package. Puppet will sort out the required order to meet all the dependencies.
In some configuration management systems, resources are applied in the order you write them, in other words, the ordering is implicit. That's not the case with Puppet, where resources are applied in a more or less random (but consistent) order unless you state an explicit order using dependencies. Some people prefer the implicit approach, because you can write the resource definitions in the order that they need to be done, and that's the way they'll be executed.
On the other hand, in many cases the ordering of resources doesn't matter. With an implicit-style system, you can't tell whether resource B is listed after resource A because B depends on...