As far as I know using VBO in CUDA is passing an array of vertex data not even using either ‘glVertexPointer’ or ‘glColorPointer’. Register it and pass dev pointer to it as kernel argument. What You do with it within kernel is Your business. In my app I use array of float4s that is specially accessed - first float4 is position, second is color, third is texcoord. Such three float4s are single vertex data. Next vertex is addressed by adding some offset, like the stride parameter in mentioned ‘glVertexPointer’, the number of float4s that define a single vertex.
For info about ‘cudaMemcpy’ I would consider reading CUDA references.