You do take a performance hit. Every transaction needs to maintain the previous version of records impacted while the transaction is running. The impact (in my experience using it) is pretty low, but it is there.
The big impact is in application design. Management of locked resources is different and you may want to handle some things differently. Overall, I have found using it to be fairly positive.