Ext3 is a journaled FileSystem based on Ext2. It also has some additional features such as extents (which reduce the amount of overhead with storing where a file is stored on the disk for large files), and hash based lookups on directories solving the problem Ext2 has with large directories being very slow. Ext4 is the next generation of this filesystem.
tune2fs -j /dev/partition
Note that unlike most disk tool commands, you add the journal to a currently mounted partition.
You can also add -J to pass journal options. The only one currently supported is size=xMB. See tune2fs(8) for min/max size.
Given Kernel support (eg CONFIG_EXT3_FS_POSIX_ACL in a 2.6.x Kernel), you can use POSIX ACLs by either adding acl to the mount options column in fstab(5) or setting a default mount option in the partition itself by issuing
tune2fs -o acl /dev/partition
You can always mount an Ext3 partition as type Ext2 — you just will not have any journalling performed. However, beware: do not do this if the ext3 partition was not cleanly unmounted! If the journal was not empty before doing so, your FileSystem may become corrupted. This may happen either right away due to incomplete journal operations or once you mount it as Ext3 again because the Kernel will then happily commit old operations to your now modified FileSystem. So make sure the Ext3 FileSystem was properly flushed and unmounted before you attempt to mount it as Ext2. (AddToMe: is this sufficient to ensure integrity?)
You can also enabled hashed directories with a 2.6 Kernel. This speeds up lookups for directories that contain a large numbers of files/directories.
tune2fs -O dir_index /dev/partition fsck.ext3 -D /dev/partition
The fsck is required to move the existing directories to the new format. If you ever remount the filesystem as ext2, directories that are written to will be converted back to the old format, so you need rerun the fsck.
If you still get filesystem checks occuring on a crash and you get a message such as mounting ext3 filesystem as ext2 appearing then you probably are using Ext3 on the root filesystem and put it in as a Module. You need to build it into the Kernel or use initrd(4) - the reason this occurs is that it can't get the module before it mounts the filesystem but it can't mount the filesystem as ext3 without the module.