The functions with (!) do change the object. They are "destructive" as they destroy the object as you had it before.
Functions without (!) are non-destructive. Rather than changing the object itself, they create a new object of the same kind but altered data.
Reversing an array destructively reverses the array "in place" by rearranging the elements. Reversing non-destructively clones the array and reverses the elements in the clone and returns a reference to the clone thus leaving the original object in tact.