Short answer
Best, average and worst case describe the cost on the luckiest, typical, and unluckiest inputs.
Explanation
We usually quote the worst case because it is the guarantee -- it bounds how bad things can get regardless of input, which matters for reliability and tail latency. Average case is useful too: for example HashMap.get is O(1) on average but O(n) in a pathological worst case (many collisions), which is why the average and worst can differ and both are worth knowing.
Common mistakes
- Quoting the average case without saying so.
- Not mentioning when the worst case actually happens.