A monad is basically an function, in the algebra sense, that will take a set of input, and map it to a different output.
That's the most simple definition I can give without getting into the math, and it's been a minute since I've really gotten into Group theory.
Maybe through a Haskell tutorial for some hands-on guidance?
http://m50d.github.io/2013/01/16/generic-contexts is an explanation of a case where I found myself using the Applicative interface - Monad is very similar to Applicative (it just adds one extra possible operation).
That turns out to be extremely useful in many cases.
Even so, I don't believe that monads are the only way to write good code.
In short they are way to automate building new types out of old types in such a way that code written for the old types can immediately be turned into code written for the new types. This allows a lot of otherwise repetitive code that you might otherwise wind up writing to be pushed to your type system. Which in turn makes it feasible to build a richer type system.
Haskell takes this idea to an extreme.
This is a good read: http://web.cecs.pdx.edu/~antoy/Courses/TPFLP/lectures/MONADS...