The Ocaml standard library is pretty shitty (you certaily want to use one of the many stdlib replacements) but Opam is pretty neat for 3rd party libraries (albeit some areas are a bit fragmented for historical reasons).
Oh come on, it's not that bad, it's just minimal. Usually I can get pretty far without having to reach for something like Batteries. That's a good thing, especially when writing reusable libraries where you don't necessarily want to pull in an entire stdlib replacement.
This tends to happen over time, as the community naturally converges on certain libraries, but it's rather opaque for a new user as to what those are. In some cases, you end up with two options and then life is a little more complicated (cf. async and lwt).