-moz- etc are called vendor prefixes . They are adopted by browser with these prefixes properties in trial period .
Generally, the justification for this type of support is the implementation of a specification not yet finalized, or the implementation of a resource that is not yet part of a formal specification (
-webkit- , for example, has many specific experimental properties ), simply. When the property behaves in a stable way, prefixes become unnecessary.
How to keep up to date
Can I Use? is an essential source for check the support status of properties in different versions of different browsers. Indicates browser versions where the property is prefix-dependent or simply not supported in any way.
"Prefixes are great"
Contrary to what has been said, "use of the prefix" is by no means a good practice - not a bad one at all. In fact, that kind of statement does not make sense. There are different views on vendor prefixes in discussion a>. Therefore, it is best to view it as something just needed at the moment.
There are recommendations, but there is no way to define whether use is necessary or not.
It all depends on how compatible your project should be.
To say that
border-radius no longer needs prefixes is a coherent recommendation and I do it myself, but that's all. Most important of all is to be aware that, while one must be attentive to the support of properties ** to avoid incompatibilities, one must also avoid vendor prefixes when its use is unnecessary .