So what happens if we're transfering lots of 8 bit words in a 32 bit bus? Does each bus cycle only transfers 8 bit at the time, wasting the other 24 lines of the bus? Or does it transfer 4 words in each bus cycle?
I would say "it depends":
- most likely you ask for 8 bits to be retrieved and you get 8 bits and ignore the other 24 lines;
- if you know you're dealing with sequential data, that you want to consider bytewise, you could retrieve 4 bytes at a time, but you'll have to split or handle the retrieved 4 bytes in code.
On specific architectures you have alignment considerations.
Specifically addressing your question, no, it is very unlikely a system would retrieve 4 words in each cycle only to then "split" them into single words to process, without a program catering for that itself.
It transfers 4 8-bit words on each bus cycle. I would not say the other 24 lines are wasted; the data on them is unused and may have no valid values. Writing code and trying to put 3 8-bit words on those lines would waste time; each cycle (either reading or writing the bus) has 32 bits of data or instruction on it. Therefore, it is more efficient (and easier) to just send the 8 bits as part of the 32 and ignore the (useless) data on the other 24 lines.
This is really a conceptual question and not a question about the workings of the bus. The processor's job is to faithfully transfer 32 bits on each cycle. It does not know which of those bits are important to you, the programmer. It does not know or care whether it contains 2 BCD digits, 8-bit ASCII, 8-bit unsigned integer, 16-bit signed integer, 32-bit floating point, or a 32-bit instruction. The processor's state machine guided by your program must work together to use only those parts of the data which are important to the task at hand. If you only want to transfer 8-bit words, the receiving process (your program) must make sure it only uses the proper 8 bits of the 32 bits sent to it.