I've seen a few conversations about how garbage collection and/or pruning will reduce storage requirements. What is the difference between these two approaches?
Garbage collection deletes unused data from your drive. In this case, it deletes intermediate states which are not needed to operate the chain. No information is lost as those states can be reconstructed from the past blocks.
Pruning has been used to describe different things. The concept makes more sense in the context of Bitcoin where it refers to removing from history the spent txos.
It could also refer to the removal of empty accounts.
Lastly it could also be used to refer to the discarding of old blocks. This still makes it possible to run a node safely, but some information is thrown away. In Tezos, reorganizations past the first block of the 5th cycle from the current one are rejected. This means that the node can delete the older blocks.
It's important that some nodes maintain a full history of the blocks to allow bootstrap of new nodes. Although, since Tezos, like all proof of stake based blockchains, needs to rely on so-called "weak subjectivity", the value is bootstrapping from Genesis is limited.