You are right: the forward only evaluates the forward (and save the necessary info for the backward)
The backward compute the gradients and accumulate them.
The step only performs the gradient step (this does not depend on the batch size as the gradient accumulation is done during the backward).