I will piggyback off ckpepper02's answer but I will use shapes with vector masks instead of rasterized shapes. I will also use layer masks to be non-destructive.
Let's say you have this image here:
Your layers would look like this:
CTRL-Click the top layer's vector mask.
CTRL-ALT-SHIFT-Click the bottom layer's vector mask.
That will select the intersection of the two layers.
Now select the top layer, and click
Add layer mask at the bottom of the layer's panel.
Here's the final result:
The added benefit of the layer mask means we do not have to destroy any data. We can, at any time, get back to full shape, or adjust it further if we'd like. If you're unfamiliar with layer masks, I'd suggest you read this quick article to get a better idea.
Also, with this technique we can keep our vector masks as well and we don't need to rasterize our layers.