To answer the question:
ICU is about localization.
Localizing is hard.
For example 1,000.50 (one thousand and fifty cents) can be written as:
1 000,50
1 000.50
1.000,50
1,000.50
1000.50
1000,50
All these variations are used by at least one language in the world.
There's a lot more stuff, like for example se-pa-ra-ting words in syllables to properly split them when words can't fit into a single line. You need a dictionary for this.
Some countries use MM/DD/YYYY for dates, others DD/MM/YYYY, others YYYY/MM/DD, etc.
A lot of this is data (i.e. what country/language does what), and in many languages there are no rules to easily determine them (i.e. syllables separation).
Hence ICU that's what's contained in ICU.dat.
Many dat files contain partial info on most popular languages and necessary info; since the full dat file can be huge (gigabytes).
i.e. do you need syllable separation for indonesian? If you are an OS developer, then the answer is likely yes. If you're a web developer targetting the USA and Europe, likely not.