Managing resource dependencies with Puppet is relatively straightforward. You describe any relationships with metaparameters and Puppet figures out the order it should enforce them in. Most dependency issues arise when users try to overspecify dependencies as if they were writing a shell script. Puppet works best when you think in terms of relationships and dependencies rather than ordering.
But there is one giant sticky issue. What about when you don't know the exact resources you need to set relationships on ahead of time?