Hi,
I wouldn't strongly connect functional programming and its abstractions to collections. It should be really understood that Applicatives and Monads model some general computations which are already spread around our code but we possibly don't see them. Once I understood which general computations are modeled I can see Functors, Applicatices, Monoids, Monad pretty much "everywhere" in my code.
These computation run in some context which is expressed by M[_], or this context is called - effect - which is modeled. Option context/effect models a value which possibly doesn't exists, List models that more or less then 1 result can be returned, Future models a value which will be available later, Try model computation which can fail, etc...
One can understand Option as a collection which has one or none value, this can be fine when starting with FP but it is good to move away from this understanding soon. Collections are just one specialized context/effect in which pure function can be executed (Functor) / pipelined (Monad) / executed independently of each other (Applicative).
As already said, Monad models pipelining aka sequential transformation from input to output. The sequential is important as each next step awaits till previous one finishes. Another point to realize is that this computation fails as soon as the first pipelined function fails, next functions are not executed and the result of the whole pipeline is a failure.
In contrast Applicative executes all steps independently, each function is evaluated and when they all finish then the next step can be taken to operate on the result, e.q. a List of Successes and Failures.
Alternatively Monad can be understood as a fancy Builder pattern. If you take a look on the return type of flatMap it is the same Monad which is "updated" by the function executed by flatMap. Compare it to a Builder pattern where each method on a data structure (e.g. class) return "this" so that methods can be chained. It is just that Monad has general flatMap and we can ad-hoc plug in any function we want later (with arity 1 or curried).
Futher you can see Decorator pattern in Monads. flatMap takes a function and execute it somewhere inside. If you implement flatMap for your own type (e. g. class) aka context/effect you can execute some general behaviour before and after that function is executed inside flatMap. And you have it - decoration.
Hope it helps,
Petr