I'm currently developing my first 3D game for a school project, the game world is completely inspired by minecraft (world completely made out of cubes). I'm currently seeking to improve the performance trying to implement vertex buffer objects but I'm stuck, I already have this methods implemented: Frustum culling, only drawing exposed faces and distance culling but I have the following doubts:

1. I currently have about 2^24 cubes in my world, divided in 1024 chunks of 16\*16\*64 cubes, right now I'm doing immediate mode rendering, which works well with frustum culling, if I implement one VBO per chunk, do I have to update that VBO each time I move the camera (to update the frustum)? Is there a performance hit with this?
2. Can I dynamically change the size of each VBO? Or do I have to make each one the biggest possible size (the chunk completely filled with objects)?.
3. Would I have to keep each visited chunk in memory or could I efficiently remove that VBO and recreated it when needed.