The way blocks are currently propagated, every transaction is sent even though a node might have many, if not all transactions already.

The idea is to just send the block header and transaction IDs, and if necessary, any missing transactions.

The ultimate achievement is a reduction in data sent over the wire, which translates to lower bandwidth requirements to run your own full-node.