yeah, that's essentially right. They're usually generated by building an actual highres object and a lowres object and baking down the surface normal information from the highres into an image, using the lowpoly's UV coordinates. Here's an example: