Usually just inputs -> copy/contiguous -> operate. The operation you have in question, MSELoss, does not care if its inputs are contiguous or not (but the code goes through different code paths depending on the contiguity of inputs).
The MSELoss backward pass depends on the gradOutput, input, and target. It does not depend on the output, but depending on what happens with the output, the gradOutput passed to MSELoss could be non-contiguous.