How would that projection matrix look like and how would you render it?
The projection matrix is the same type of projection matrix (aka perspective matrix) that you would use for normal rendering. It defines the field-of-view for the projector, like it normally defines the fov for the camera.
In both cases you have to calculate the real world coordinates, but you could store them in the map, I guess.
If you do it per-vertex, you can have the fixedfunction texcoord generator take care of that, as I said before. Then you can just store camera^-1 * projectorviewmatrix * projectorperspectivematrix as a texture matrix, and enable projection of texcoords.
You can also write an equivalent vertexshader ofcourse.
This would still enable you to calc the z per-pixel via a heightmap if you are bummapping.
You could also do it completely per-pixel, but there should generally be no need to, and it requires quite a lot of precision and processing power per-pixel. So it would only be suitable for DX9 cards.