How is it that the predicted value can simply be multiplied by 1000 to get the un-normalised output value, when the input values are z-scale normalised values of X, W & B

If you notice, the target variable y, which is the price of the house was not normalized.

However, the y value was divided by 1000 right at the beginning and we used the output of this operation as the original value of the target variable y. And it is this value of y that was used in the training. Consequently, the predicted value \hat {y} will be off by a factor of 1000.

So, when the model predicts 150. The actual predicted value should be 150,000. It is for this reason that we do the simple multiplication with 1000.