This concept is derived from mathematics, where x = a + b, means what it is and cannot be overridden or given a new value, like x = c + d. The same concept is carried forward into functional programming. So, what good does it do?
The biggest contribution of immutability is scalability. Since they are immutable, there are no locks or synchronization to deal with! Anyone, who has done decent amount of programming will acknowledge to the fact that it is among the toughest part of programming and prone to errors and inconsistencies! Since, there are no locks, there are no overheads (time) associated with obtaining, releasing or queueing for locks.
Hence, it also makes the application faster! It also makes the code less complicated and more predictable and gives the ability to write code that is more intuitive to write, which usually results in an intuitive end-user application experience.