That’s correct, that is the main difference. x and x.detach() share the same memory, but x.clone() makes new memory.
There are also some subleties around requires_grad (and possibly other things). If x has requires_grad=True, then x.clone() also has requires_grad=True but x.detach() doesn’t.