Differences between Private Property, User Property, and regular Property?

As the thread title suggests, I'm unclear as to the difference between private, user, and regular properties on DzElements. I've seen in the SDK docs that user properties can be added/removed by users, but what are the differences between regular and private properties?
Thanks