It's a class in Haskell, not on Haskell.
Hopefully they cover the theory behind Haskell as much as the practical side of it.
Monads can be formulated in any language with first-class functions. Monadic I/O is more distinctively Haskellish, and of course Haskell has syntactic sugar to make using them easier, but as a tool and a concept they're far from unique to Haskell.
Yes, though they only really make sense if you also have static typing, and polymorphism by return type also helps.