I think that this question is a bit too broad for the SO format. The space of "possible things you could do with multiple references to the same object" is large. But regardless, yes, there are more possible uses (and abuses) than making multiple references to a mutable data type.
You can, for example, usefully make multiple references to an object that maintains state (like a generator) and access your references in order, perhaps doing something different with each. One "cute trick" that comes up fairly often is the following method to "chunk" an iterable into n
pieces:
s = 'this is a string'
its = [iter(s)] * 2
zip(*its)
Out[17]:
[('t', 'h'),
('i', 's'),
(' ', 'i'),
('s', ' '),
('a', ' '),
('s', 't'),
('r', 'i'),
('n', 'g')]
Obviously you don't need the ability to make multiple references to the same iterator to accomplish this task, but python lets you do it. This type of approach could be useful if you want to "striate" a file-like-object, or something along those lines.
As for "gotchas", or things you need to watch out for, they are mostly riffs on the same issue. How do I make a multidimensional list in the python programming FAQ covers it pretty well.