[quote]In a general case where various types of primitives and states are required (quads, strips, fans, different textures, different texture coordinates, etc) preallocating enough different VBO buffers seems challenging. You indicated I can place multiple types in one buffer. Which calls are those? Right now I allocate VBO buffers for each array call (vertex, color, tex coord), should I be looking at a different way of doing this?
[/quote]
VBO is just an array of data. You can draw any goemetry type (quads, strips, fans, triangles etc) using the same VBO. You just have to but the data in the right order.
If you don’t use interleaved array you create on array for each type that you use (vertex, color, normal. tex coord). A geometry, like a mesh, will use a subrange of the global array. If you create and delete a lot of geometry you need to manage the subranges. Chanses are the array will get fragmented and you need to deal with it. You basicly need to create your own memory manager 
[quote]Some comments indicated that interleved was not any faster, and could be slower. My application is not a game, so some of the uses are differnt. I originally used arrays and got noticeable speed up by using VBOs for the drawing. So, knowing which parts are going to change often for a period of time would seem to be an issue. Also, is the allocation of the buffer the issue, or the bandwidth to update the data in the buffer? If it is just the allocation, then pre-allocating and reusing buffers would seem to be an easy solution.
[/quote]
Allocation is pretty bad, so you defenetly want to pre-allocate. Uploading the data is slow compared to having it permenently stored on the card. But it is fast enough to be done in real time. With VBOs you can give the driver a hint of how often you will update your data. This can then influance where the data is stored. Either on card, on agp memory or in system memory. There is a great paper on this on the nvidea site. Search for it.