Disk tools confusion: dd or cat or cp?

Originally dd was created for working with tapes where block size mattered - it was exactly the underlying device block size. Using wrong block size could return incomplete data (because every IO would have fetched new physical tape block and if you requested smaller size, the rest of block was discarded). dd was also used to exchange data between Unix and other systems using fixed-size records (here is where conv=block/unblock options originate from initially) where block size had to match record size.

Linux does not really have character disk devices in the old Unix sense, so here block sizes are hidden by driver and it does not really matter indeed. It still matters for tapes though.