I am trying to create a query that will retrieve results only for pages that have been published. Right now when I run the query below, I will get EVERY page, whether I have hit publish on them or not. This is a problem :)
SilverStripe should handle this for you built in. You don't need to explicitly fetch stage / live. Make sure you're not viewing the site in 'stage' module (try your site.com/?stage=Live and see if pages still show up.
If you explicitly want to get content by stage use Versioned (http://api.silverstripe.org/3.1/class-Versioned.html)