If I want to use the puppetlabs-aws module to create Amazon AWS instances, on which node in my puppet hierarchy should I declare those classes? Obviously I can't declare them on the nodes that I'm about to create, so where, then? When and how does the manifest get applied?
It doesn't matter where the manifest runs. You could puppet apply
the manifests in your local dev environment as a quick way to get started. In a production environment, you might alternatively have a dedicated node that is classified as your "provisioner" where you choose to run manifests from. There's nothing preventing you from classifying your existing Puppet Master as the "provisioner" either.