I need help with textures. The last parameter to glTexImage2D(), a pointer to the image data - this data is copied to the texture, right? Or IS this the texture data? I thought that texture data is in video memory. So the data passed to glTexImage2D() is only copied?
So, do I HAVE TO pass a pointer or can I pass just NULL when I copy other data to the texture with glTexSubImage2D() later on?

The data is copied from the pointer address. If you pass NULL in, there will be no update of the texture.