An uncle is a block that in bitcoin would be considered an stale because its 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:
1) It decreases centralization incentive by still rewarding miners that produce stale blocks on account of them not being part of a big pool and hence hearing about blocks later (due to network propagation delays)
2) It increases the security of the chain by augmenting the amount of work on the main chain by that done in the uncles (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)