What is static- and dynamic bindings in general?
Static binding means adding a rendering to a page in a raw way, e.g. in an mvc view:
@Html().RenderAction("Controller", "Action");
Essentially, it means that you are not able to change this without editing the code.
Dynamic binding means that on a page you will have a placeholder to put your renderings into:
@Html().Sitecore().Placeholder("main")
After that in the Content Editor (or Exp Editor) you will be able to "dynamically" add any rendering you like to that "main" placeholder.
When would I use static bindings, and what are the use cases for doing so?
When would I use dynamic bindings, and what are the benefits of this?
It is generally recommended to use dynamic bindings, because of their flexibility.
However you may want to use static bindigs for things like site header rendering, etc (something that should not be removed by editors mistake and is not supposed to be changed)
Please refer to the official Sitecore documentation for more info on how this works altogether with layouts, sublayouts and renderings (https://sdn.sitecore.net/upload/sitecore6/sc62keywords/presentation_component_reference_sc62_a4.pdf)