A futures contract expires. Holding continuous exposure therefore means periodically closing the expiring month and opening the next one, and because those two months trade at different prices, the act of rolling has a cost or a benefit of its own. That is roll yield, and over any meaningful horizon it can dominate the flat price entirely.
The sign follows the curve. In contango you sell the cheap expiring month and buy the dearer next one, so every roll is a small loss. In backwardation you sell the dearer month and buy the cheaper one, so every roll is a small gain. Nothing about the spot price needs to change for either to accrue.
This is the mechanism behind a long-standing complaint about commodity index products. A long-only index has to roll, it rolls on a published schedule, and in a persistently contangoed market it bleeds. The index is not badly built; it is doing exactly what it says. The mistake is reading its return as a proxy for the spot price return, which it is not and cannot be.
For a desk the practical consequence is that structure and level need separate views. "I think crude goes up" and "I think the front spread tightens" are different trades with different risks, and a long outright position in a contangoed market is quietly the sum of both: a bet on the level, plus a standing short position in carry. See liquidity for why the roll also has a transaction cost that varies with where you do it.