Since it is A0 itself that is byte swapped, the correct value for the lower byte will be returned.
What do you mean, A0 is byte swapped? How do you byte swap an address register? What address does it point to, the most significant byte of our longword, or the least significant byte? It can't point to two different addresses.
No, because the BYTE value of $78563412 is $12 - just as it would be with a software only op-code interpreter.
But the number is not $78563412. The number is $12345678. The byte value of that is $78.
A byte access wouldn't know anything about the other three bytes. The $12 is stored at (A0). The $12345678 is stored at (A0). If you swap it in memory, the address register no longer points at the most significant byte.
If there is a string in memory, such as "abcdefgh" does it get swapped to "dcbahgfe"? But the pointer to the start of the string still points to "a"?
Supposing we have a longword access at 2(a0), then what?