There is a work-in-progress second edition of "Real World OCaml" book [1], which has many small but vital updates corresponding to the modern state of OCaml and its infrastructure. Moreover, I recommend checking the Lwt [2] from the beginning for working with multithreading. OCaml Ctypes [3] library for creating FFI stubs without a single line of C and Cstruct [4] for working with C structures. If you want to interact with some Python code or script your OCaml program with Python - you can use Pyml [5] library. OCaml universe also has a good library for numbers crunching and scientific computing (including primitive Machine Learning) - Owl [6]. For writing OCaml instead of JavaScript, it is possible to use BuckleScript [7]. And if you are starting a new project in OCaml - I recommend using the most modern buildsystem - dune [8]. It is very simple to use and with a less overhead than others. I found also Angrstrom [9] is very useful for implementing binary and text format parsers.
Utop [10] and ocaml-jupyter [11] are the best choice for experimenting, browsing the API and testing some small things.
[1] https://dev.realworldocaml.org/toc.html
[2] https://ocsigen.org/lwt/manual/
[3] https://github.com/ocamllabs/ocaml-ctypes
[4] https://github.com/mirage/ocaml-cstruct
[5] https://github.com/thierry-martinez/pyml
[6] https://github.com/owlbarn/owl
[7] https://bucklescript.github.io/
[8] https://dune.readthedocs.io/en/latest/quick-start.html
[9] https://github.com/inhabitedtype/angstrom
[10] http://github.com/ocaml-community/utop
[11] https://github.com/akabe/ocaml-jupyter