An uncle is a block that, in bitcoin, would be considered a stale block because it is not on the longest chain (it's an alternative block at the same height as your parent).
Ethereum incentivizes miners to include a list of uncles when they mine a block.
This has two main effects:
It decreases the incentive to centralize by rewarding miners that produce stale blocks on account of them not being part of a large pool and hence hearing about blocks later (due to network propagation delays)
It increases the security of the chain by augmenting the amount of work on the main chain by the work done in the uncle blocks (so, no work, or at least much less work, is wasted on stale blocks)
That being said, uncles introduce additional economic complexity that I'm not sure is well understood (like incentives to mine empty uncles)
Additionally, consider this paper here
(Grabbed from a Reddit post)