page_layout represents the full page, i mean you can declare your own full page without inheriting any master or root or other empty layout.
layout represents the part of the page mostly the html content. You can use this when you want your page to inherit the common contents from the root layout like header, footer etc.
For overright page layout please ...
We use a different solution with applying a CSS-style:
div.products.wrapper.grid.products-grid div.price-box.price-final_price, /*pricing in categories*/
display: none !important;
We use this way to avoid problems with the updated list.phtml file by further Magento updates and in our case hiding price is only a "nice to have" but not business-...