Generally speaking, it depends on how the game is programmed.
In the case of Source-engine games, they used a multi-tier software architecture, and moved everything platform-specific into /tier0 in their code. When they need to port something, at least by the original engine design, they just swap out /tier0 files for platform-specific ones, and reimplement the Source engine executable for, say, Linux, re-binding things like audio (ALSA/etc. vs. DirectSound), graphics (OpenGL vs. Direct3D), video playback (who knows), window generation (X/GLUT/whatever vs. Win32/64), and I/O (XInput/whatever vs. DirectInput) to their system-specific counterparts. It was designed like that from the very beginning, though a lot of system-specific stuff has crept into higher tiers of the engine due to bad maintenance over the years. Most of what they did to "port" the Source titles to Linux was just refactoring out the Windows-specific stuff, and reimplementing the core executable.
In terms of "Are there engines that build to Linux?": Of course. With the changes made for this big release, the Source engine now runs on Linux. There are literally hundreds of others, of varying quality or availability.
As for your third question, porting happens by the developers. If you don't design your software with platform-nonspecificity in mind, then it just makes it harder. Nothing is truly impossible to port, disregarding hardware capabilities and computing speed. There's no such comprehensive "tool" for porting games to other platforms, though, since they all work differently under the hood.