In such highly dynamic environment,
such as computer game scene is, what
is the point of using VBOs, if the
VBOs would need to be constructed on
per-frame basis anyway?
If you are reconstructing the vertex data for every object every frame, you're doing it wrong. Or at least, you're probably doing it inefficiently.
Moving objects in a scene can and should usually be done by changing the world transformation matrix used to render that object, not changing the vertex data directly. Skeletal animation has entirely on-GPU solutions, as well. Decomposable objects can be rendered with distinct transformation matrices, such that they appear together until they need to be decomposed, and then the matrices are adjusted to make them split apart as desired. Objects that are not visible or not spawned need not be rendered, even if their vertex data is on the card from a prior frame -- they don't need their buffers destroyed/recreated every time their visibility toggles.
Can you please help me to understand
how to practically take beneif of VBOs
in computer games? Can there be more
vertex based VBOs (say one per one
object) or there must be always
exactly only one VBO present for each
draw cycle?
You can have multiple vertex buffers. In generally you have one per each mesh/model, and you refer to that single mesh/model data structure with a collection of possibly-many renderable objects which contain their own unique world transformation matrix. This way if you have 50 enemies who all use the same mesh, you only need that mesh in-memory once. Then you have 50 smaller, lightweight instance structures that refer to that mesh and hold a unique world transform used when rendering each instance.