> I am still not sure how far modifications to the type inferencer/checker affect the code produced, beyond whether any code at all is output.
Most extensions are safe, there are a few that are known to cause (or to have caused) trouble.
Safe (type-system) extensions include: MultiParamTypeClasses, FunctionalDependencies, FlexibleContexts, FlexibleInstances, LiberalTypeSynonyms, DataKinds, ConstraintKinds, GADTs, ExistentialQuantification, RankNTypes, GeneralizedNewtypeDeriving(since ghc 7.8), TypeFamilies. I would also put UndecidableInstances here, as it will not produce incorrect code, it's just that the compiler may give up on type checking. There are a couple of more, this is just to give you an idea..
Safe but never to be used extensions(except if you know -exactly- what you're doing): OverlappingInstances, IncoherentInstances