Yes, glTexImage2D copies a pixel array into the video RAM or other memory controlled by the video driver.
Actually, it is partially true.
Drivers do really copy data to theirs memory, but it is still RAM. Only when the data is really needed they are copped into a GPU memory.
In short, glTexImage2D prepares data to be sent to GPU, and tells GL that they should be sent, but it occurs immediately before the usage.
It is a kind of driver optimization. Neither glFlush or glFinish would force them to do it if the date from the texture are not used.