Consider if you write software VERY BADLY.. and you write an operating system.
This operating system takes keyboard input amongst other things.
So you ask your OS to go and get some keyboard input, but there are no keys pressed and none in the buffer.
your Whole OS will then HANG DEAD until it gets a keyboard input.
Contrast this with 'look ahead', you ask if the KB has any characters BEFORE making the call.
You get the answer NO, so your OS then goes and does something else.
That is WHY you should care, now if you then multiply that by every other potentially blocking task, you can see why 'look ahead' is critical.
Because It also applies to OUTPUT: A memory to a disk-drive interface can also flood data to the disk-drive faster than it can process it.
if you do not know the drive buffer is flooded with data, then the task will block until the buffer can accept more data.
This also highlights the nonsense of 'there are very few useful uses.'