What does static/dynamic BVH do?
About BVH:

BVH creation is a method of space-partitioning to speed-up ray-tracing (or also collision detection, etc.). BVH itself is a node-tree data structure that wraps polygons in bounding-boxes based on spatial-hierarchy - thus Bounding Volume Hierarchy. You can compare how BVH looks (left) in contrast with Octree (right):



Space data structures eliminates potential ray intersection candidates by omitting geometric objects in bounding volumes which are not intersected by the current ray. It's still an area of active research (gpu friendly implementations) - there are many more types (kD-tree, BVH, BIH, Octree, Uniform Grid,..) and it often depends on what you need them for.

Here is link (.pdf) for more reading how BVH works for anyone interested.



Now static vs. dynamic option for view-port:

If you start view-port rendering BVH will be created. When the scene is changed (this counts object movement, geometry deforming, etc.) the static BVH needs to be completely rebuilded resulting in slower update times. But it renders faster. With dynamic BVH only a portion needs to be updated, which results in faster updating but it renders slower.

For rendering only static BVH is used, and the BVH tree can be also cached for faster re-renders (when for example only camera or materials changes) or cached for all animation frames for faster re-animations (if that's a word:)