The difference is that if you use the detached tensor and for example compute a loss, the gradients of that loss will be only computed backward upto the point of detachment. However, if you use the other one, the gradients will be computed even further back.
I can explain this with an example:
>>> m1 = torch.nn.Conv2d(3, 5, 3)
>>> m2 = torch.nn.Conv2d(5, 5, 1)
>>> x = torch.randn(2, 3, 4, 4)

### making a forward pass:
>>> h1 = m1(x)
>>> h2 = h1.detach()
>>> z1 = m2(h1)
>>> z2 = m2(h2)

So in this example, the gradients of z1 will affect both m1 and m2, while the gradients of z2 only affect m2. The reason is z2 is computed from h2 and h2 which is detached from the computation graph.