I know if you give your public view key to someone, they can see all the incoming transactions to an address. But it does not show the output transactions of that address. Is this what the public spend key is for?
The public view key doesn't allow seeing the incoming transactions. The private view key does that.
In fact, the public view key and public spend key are contained in the Monero address you give to people so that they can send you funds.
The public spend key is used (together with the public view key) to generate the public key of an output.
To generate the private key of an output (to spend it or to generate its key image to check if it has been spent), you need the private view key and the private spend key of the wallet.
Check What significance does the wallet public spendkey and public viewkey have in a transaction? for more details on how the public and private keys of an output are generated.