There is a presentation on ATI site how environments were done in HL2. basically they render cubemaps at fixed positions in world (made by level designers). As for water reflections - probably they are done with usual stencil trick: first render "over"-water, later render underwater at stencilled positions, apply postprocessing at underwater surface.