It's a way of programming without modifying data structures in place/in memory. It's also enables us to retain old values by generating new ones without modifying them. To learn the value of immutability, I suggest watch rich hickeys talk titled "The value of values".
Coming back to freezing a python object, the most obvious way to use that is to ensure that the object isn't modified by another function when passing it around, this may not seem like a feature at small scale but when working it large code bases it absolutely is.
Immutability's main feature is that it makes concurrency easier, if you have some data that's immutable, you can share it freely and everyone can read from it and is guaranteed to get a consistent view of the data without placing any locks or synchronisation.