The easiest way to understand this issue is to consider a basket holding opposite positions in the two derivatives.
tl;dr: The futures have a linear profile whereas the forward is convex due to discounting, so there is a bias priced in by the market
Building a simple, par basket
So we are long some interest rate futures and short some Forward Rate Agreement (FRA) - the FRA is exactly correlated with interest rates, so what applies to that we can also apply to something with less correlation. We choose a FRA with the same fixing date as the future so they depend on the same number.
Since FRA and entering a futures position are both par trades, we have a par (zero) value on the basket. So we set the notional amounts on the two trades such that they offset each other - the FRA pays out a discounted amount so its notional will be slightly to the future. This is then delta hedged at delivery; one trade will exactly pay for the other regardless of how interest rates move.
Its value goes up when rates move in either direction
Consider now what happens immediately after we construct the basket, as interest rates move. Suppose they go up in parallel by 10 bp: the futures position will move 10 bp up, netting us 10 x \$25 per tick = \$250 per future.
What about the FRA? Its payoff is discounted at the real Libor rate, not at the rate we traded, so its payoff is now more heavily discounted. Note that we discount the payoff now because there is still time left before delivery; on the maturity date, the payoff will still match the futures position. For now, though, our basket has a net positive value.
What about when rates go down by 10 bp? The reverse happens, and our futures position loses \$250 per contract, and the FRA value moves up (it will pay out at maturity). But rates are lower, so the payout suffers less discounting than when we set it up, and thus its value increases by more than the \$250. So our basket has a positive value again!
The market prices that in
If you can build a basket whose value goes up whether the underlying goes up or down, then why not do that as much as you're allowed and make use of tur free money between now and expiry?
Inevitably, then, the market does factor that in and thus the futures prices are discounted by an amount which reflects this bias for holding futures over FRAs.
The adjustment comes from this mismatch between the profiles of the instruments - we would say that the future has a linear payoff profile whereas the FRA has a convex profile, so the adjustment is labelled a convexity adjustment.
The convexity adjustment depends on the rate volatility
You will note that the positive position we ended up with depended on how much rates move - the more they move, the higher the value, so we can see that the convexity adjustment will depend on the volatility of the rate - if it is expected to move more, we can expect it to make more money.
Futures prices reflect this adjustment
If you look at futures prices, e.g. for interest rates, the effective rate embedded in the price is already adjusted by this bias, so to read the market's expectations of forward interest rates you must calculate the adjustment and apply it to those rates.
Adjustments apply beyond rate instruments
The above all applies to futures and forwards on any instrument correlated to interest rates, because it is that action of changing the degree of discounting which makes one half of the basket convex with regard to rate movement.