I think you are again mixing the Instruction access with Data access. As far as data access is concerned we may use the last two bits to fetch any byte among the 4 byte data.
But the concept of not using last two bits has nothing to do with accessing individual byte of a 32 bit instruction. As you said, accessing one byte at a time for instruction access is highly inefficient and is not permitted as well. So to enforce this rule ( of not accessing bytes at odd boundaries in instruction access) the last two bits will not be considered. The following diagram will explain this:
The addresses are 32 bit:
|--0x00000007--|--0x00000006--|--0x00000005--|--0x00000004--|
|--0x00000003--|--0x00000002--|--0x00000001--|--0x00000000--|
Focus on the last nible:
| 3-0011; 2-0010; 1-0001; 0-0000; |
| 7-0111; 6-0110; 5-0101; 4-0100; |
Now focus on the last two least significant bits. Our aim is not to allow an instruction to start at locations 1,2,3,5,6,7 So if you check the two LSB's they cannot be anything in 01,10,11. Only "00" as the 2 LSB's is allowed. Now since they are 00 it is as good as ignoring them when the address generated is in multiples of 4.
Hope you can visualize better.