The inplace version would also detach the source tensor as seen here:
# inplace, non-view
a = torch.randn(1, 1, requires_grad=False)
b = torch.randn(1, 1, requires_grad=True)
c = a * b
d = c

d.detach_() # detaches d and c since inplace
d[0, 0] = 1.

(c + a).sum().backward()
# > RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

“Views cannot be detached in-place” refers to e.g. this code snippet:
# inplace, view
a = torch.randn(1, 1, requires_grad=False)
b = torch.randn(1, 1, requires_grad=True)
c = a * b
d = c.view(1, 1)

d.detach_() 
# > RuntimeError: Can't detach views in-place. Use detach() instead.

Detaching d not inplace works if you want to use c for the backward pass:
# not inplace
a = torch.randn(1, 1, requires_grad=False)
b = torch.randn(1, 1, requires_grad=True)
c = a * b
d = c.detach()

d[0, 0] = 1.

(c + a).sum().backward()