Yea, they're really fairly simple. The env_cubemap takes six pictures from its point in space. The pictures are taken at perpendicular angles to one another, much like the faces of a cube, hence the name. Any reflective materials nearby will look to the opposite face of the nearest env_cubemap to render a simulated "reflection" of whatever the cubemap took a picture of. The farther away the cubemap is from the objects you want reflected, the more stuff you can fit into the "pictures" of the env_cubemap. I think 16 units from a surface is minimum, but in my experience, 64 works and looks better as a minimum. -It's whatever you desire, really.
You may increase their resolution, and hence make a sharper reflection for the surfaces that use
that cubemap, but this does increase map file size very quickly, and makes it heftier to render, because essentially every cubemap includes 6 new separate textures to your map that all have to be rendered like every other texture. If you select one too many env_cubemaps to have a larger image collection of over 128x128 px you may run into slow-downs for older systems. I think the resolutions go up to 1024x1024; <that res would be more apt for a mirror and should be used sparingly.
All you have to do is place them, and run the command once in-game after you've loaded your map and your good to go.
One word of warning too, if you ever rename your map after you've built your cubemaps, you'll need to re-run the command, because the cubemaps are essentially "packed" into the map and use a file-like structure to be accessed. If you change the name, you break the structure. Of course, doing this means you have another set of images embedded into your map, and thus the file size of your map is larger than it needs to be because of it. If you want to change a map name, do it before you build 'em. Otherwise, I would re-compile, or open up the pack and remove the old ones.
Just my 2 cents.