A bunch of things I can just think where the bit and byte stuff has helped me:
- Database structures: smaller is usually faster, and you save storage. If you know a column can only store numbers from 0 to 16, make it TINYINT UNSIGNED (one byte, 8 bits) instead of 4 bytes (32 bits). Think of x4 storage gain, think when you have hundred of thousands of rows...
- Encoding stuff: learn some hexadecimal to be able to scratch your head around the bytes of anything instead of being blind about it.
- For critical or limited storage (or making smaller packets/transfers), you can use "bit masks". Instead of using 8 bytes for 8 flags, you can use just one byte (8 bits) and just "flag" each bit of it.
Etc.
Composition: the output of a function/ program / server should be digestible by another function / program / server that doesn't know anything about the first one.