What are the advantages of using apply from vs parent-child? Which is recommended? Can they both be used together to enable top down as well as individual child project builds?
The two are orthogonal concepts:
Script plugins (“apply from”) allow you to extract pieces of build logic that belong together, e.g. all the logic for a certain tool you are using. They are a first step on the way to a fully-fledged plugin.
Cross-configuration (“parent-child”) allows you to avoid repeating the same configuration (including plugin applications) in all your child projects.
If you have a multi-project-build, then the child projects are never built in isolation, but always in the context of their build. If you want more separation than that, you can use composite builds.