My personal solution for this issue, without using third party modules, has been:
Setup a page reference field on the home template, that lets me pick the projects I want to showcase, and I make the assumption that l'll pick the first image of the gallery of each project.
So i the home template you'll end up with something like:
<div id="masonry-gallery">
<?php foreach($page->portfolio_pick as $project):?>
<img src="<?=$project->gallery->first->url?>">
<?php endforeach ?>
</div>
- gallery being the field within the project template.
- portfolio_pick being the page reference field on the home template.
Another thing I've done, but that I'm not a huge fan of for certain uses, is adding a extra fields to the image field, in this example, the field "gallery" in the project template. So you can then code something like this on the home template:
<div id="masonry-gallery">
<?php foreach($page->portfolio_pick as $project):?>
<img src="<?=$project->gallery->findOne('is_main_image=1')->url?>">
<?php endforeach ?>
</div>