When I seemed to understand what return is for in Haskell, I tried to play with different alternatives and it seems that return not only can be used anywhere in the monad ch
I suspect that you're misunderstanding what "return" means in the context of a monad in Haskell. return is a function that takes in an a and returns a "wrapped a" -- that is, the simplest possible instance of the monad. In other languages it is often called Unit. It's not the "control flow" return that you see in C-like languages.
So in your example of the Maybe monad, we have return defined as a function that takes in an a and returns a Maybe a:
return :: a -> Maybe a
And what does it do? if you give it x, it gives you back Just x:
return x = Just x
And now you can use return as a shorthand when you need that function, rather than writing out:
\x -> Just x
It's called return because when you're writing out monads in do notation, it looks like what you'd do in a C-like language.