A Journaling file system is simply a file system that uses a metadata file to record changes until they are finally committed.
For example.
Assume the file system is in a stable and completely committed state. If you switch it off then and switch it on, then it will still be 100% OK.
Assume you now initiate a file transaction. This entail a series of steps: data is written to a part of the disk, the bits of the disk written to are "remembered" in memory and then written to the filesystem index areas, timestamps are updated, etc. This transaction involves writing to several different areas of the physical disk in sequence. If the process is interrupted half way through, the file system integrity has suffered and is "corrupt". The file check program has the task of rooting out these corruptions and reverting the file system to complete integrity. In the process, however, some unwritten stuff will, of course, be lost and some stuff that has been written will be left hanging in "orphan" files. With a journaled file system, the information pertaining to this series of steps is first written to a metafile or journal file on the disk. During the next few moments, the instructions in this journal are then executed as before but a track of what has been done is recorded as "done" in the journal. If the process is interrupted at any point, all that is needed is for the system to carry on where it left off and so end up with a cosher file system with no data loss. The only time that data can be (theoretically) lost is if the insult occurs during journal writing. However, writing the journal is a much faster and simpler process that doing the full file system write and thus data loss is much less likely. Also, if the journal has not been written, then the file system is by definition still intact and cannot be corrupt. This makes recovery from power outages blindingly fast and much more efficient since it is merely a process of recovering and completing the journal instructions and then purging the journal.
ext2 is a non-journalled file system.
ext3 is ext2 with an added journal file system.
When a system is started up, all file systems are checked. with ext3, the journal is looked at and recovered. However, this is only done a set number of times or before a certain interval. Thereafter, a full belt and braces scan of the file system is performed to catch any possible errors that may have escaped the file system.
Most "modern" file systems are journaling systems.
The very latest, ZFS from Sun, is another step beyond that with automatic though level integrity checking, dynamic create and destroy and hardware replacement facilities. It also has built in striping, mirroring and raid facilities, built in snapshot and rollback facilities, data duplication to any level required and much more. It is very impressive but requires about 1G memory and a decent processor just to run the file system!