It basically says "The data is in the next n blocks".For example, a 100 Mi B file can be allocated into a single extent of that size, instead of needing to create the indirect mapping for 25600 blocks (4 Ki B per block). Extents improve the performance and also help to reduce the fragmentation, since an extent encourages continuous layouts on the disk.This gives the block allocator the opportunity to optimize the allocation in situations where the old system couldn't.Delayed allocation plays very nicely with the two previous features mentioned, extents and multiblock allocation, because in many workloads when the file is written finally to the disk it will be allocated in extents whose block allocation is done with the mballoc allocator.Traditional, Unix-derived, file systems, like Ext3, use a indirect block mapping scheme to keep track of each block used for the blocks corresponding to the data of a file.This is inefficient for large files, especially during large file delete and truncate operations, because the mapping keeps an entry for every single block, and big files have many blocks - huge mappings, slow to handle.Ext4 will use the new data structures only on new data, the old structures will remain untouched and it will be possible to read/modify them when needed.This means that if you convert your filesystem to Ext4 you won't be able to go back to Ext3 again.
This means that you can improve the performance, storage limits and features of your current filesystems without reformatting and/or reinstalling your OS and software environment.
In order to map blocks beyond 2^32 to a file, extents must be enabled since block maps only know about 32-bit block numbers.
As of e2fsprogs 1.42.9, this requirement is enforced by mke2fs.
There's also a feature that takes part in this fsck speed up - "flexible block groups" - that also speeds up file system operations.
The journal is the most used part of the disk, making the blocks that form part of it more prone to hardware failure.