A few things make this not a straightforward thumbs up for me, though I'm not strongly against.
What is the interaction with GHC20xx? Presumably we want to say something like GHC20xx will never include any Deprecated or Legacy extensions? What about Unsable? if an extension transitions from Stable -> Legacy, would we remove it from the next GHC20xx?
Something doesn't feel quite right about the warning system. If a module can start with
{-# OPTIONS_GHC -Wno-XDeprecated #-}
{-# LANGUAGE OverlappingInstances #-}
and silently use an extension that the {build system, user, project} wanted to disallow, have we achieved anything? Compare this to the current situation, where the environment can say -XNoOverlappingInstances and code can override that with {-# LANGUAGE OverlappingInstances #-} - there's essentially no difference, we just added another layer of disable/override that isn't buying us anything.
(note I'm viewing this through the spectacles of -Werror, because I've come to believe that warnings are essentially not useful unless given teeth with -Werror.)
Cheers
Simon