\rotate[rotation=90]{\externalfigure[cow][width=4cm]}
This works better, but the figure's size is not changed. Apparently, the size is calculated before it is rotated. And these claculations stick in different ways.
What do you expect, the width setting is for the unrotated figure.
Actually, I was not using width at all, just \externalfigure[foo]
I expected that \externalfigure[foo][orientation=90] would first rotate the figure and then calculate its size. But it did not. It put in a figure of 4x8, while telling TeX the box was 8x4.