What is the difference between opam pin and opam install, when to use one vs the other?

From SO:

*opam install* and *opam pin* are the common two ways to manage the packages in the OCaml package manager, OPAM.

 -*opam install* installs a latest version of package that is compatible with the
   installed versions of other packages, from the repository and its
   dependencies.

 - *opam pin* allows us  to directly specify a version of a package and its dependencies. When you pin a package, OPAM will always use the specified version, even if a newer version is available. This is useful when you need an excat version of a package for compatibility reasons or any other reason.

ref: What is the difference between opam pin and opam install, when to use one vs the other? - Stack Overflow