Somehow it might seem a bit easier to me to grasp the function of a function with the help of type signature.
I'll try just omitting the signatures, it's easier and more handy isn't it?
Sometimes, sometimes not. Type signatures can help localize type errors, as otherwise ghc can infer an unexpected type and then report it to you at a different place, making it difficult to untangle where it got the weird type from.