Cheers, the fact that I had scaled the objects is the problem ! If I create the blocks of the right size without scaling, then parent, then it works fine.
I just looked up freezing in the online help, and tried doing that to the scaled blocks before I parented them, but I still get the shearing. Any idea why ?
>> Solution = I'd only freezed the transforms of the two right hand blocks. I also had to freeze the transforms of the parent of the child I was rotating.