Hmm. I think this is more of a feature than a bug.
The getter of the property "LeftAxis" is
function TChart.GetAxisByAlign(AAlign: TChartAxisAlignment): TChartAxis;
begin
if (BidiMode <> bdLeftToRight) then
case AAlign of
calLeft: AAlign := calRight;
calRight: AAlign := calLeft;
end;
Result := FAxisList.GetAxisByAlign(AAlign);
end;
For LeftAxis, AAlign is calLeft, but of course an axis with this alignment does not exist any more after executing the first line of your code which gave it the Alignment calRight. Therefore, the result of this function is nil. In other words: you made the LeftAxis a "RightAxis" and there is no "LeftAxis" any more. Therefore, "Chart.LeftAxis.TickColor := clGray" must crash. Of course, the error message could be more descriptive, but this is a general problem of all error messages when properties of a "nil" object are accessed.
Your second code snippet, on the other hand, is correct because the former LeftAxis still exists in the axislist at its old index 0.
When you change the Alignment in the Object Tree above the Object Inspector you'll notice that the property LeftAxis in the Object Inspector will go away.
Only when you change the Alignment in the property LeftAxis of the Object Inspector the LeftAxis remains. Probably this is intentional because if it would disappear at this moment the user would be very confused. But when you select another control in the form designer and then switch back to the chart the LeftAxis will be gone, too.