The prefixes -webkit-
, -moz-
etc are called vendor prefixes. Are adopted by the browser with these prefixes properties still in trial period.
Generally, the rationale for this type of support is the implementation of an unfinished specification, or the implementation of a feature that is not yet part of a formal specification (-webkit-
, for example, has many specific experimental properties), simply. When the property has a stable behavior, the prefixes become unnecessary.
How to keep up to date
The Can I Use? is a source essential to check the support status of the 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, the "use of the prefix" is not, in no way, a good practice - not bad. In fact, this kind of statement does not make sense. There are different views on vendor prefixes under discussion. Therefore, it is better to see it as something just needed at the moment.
There are recommendations, but there’s no way define whether the use is necessary or not.
It all depends on how compatible your project should be.
Say that text-shadow
or border-radius
It no longer needs prefixes, it is a coherent recommendation and I make it myself, but that is all. The most important thing of all is to be aware that, while keeping an eye on the support of properties** to avoid incompatibilities, one should also avoid vendor prefixes when its use is unnecessary.
@Evando these prefix selectors are considered "experimental", ie are not "standards" according to standards, but in several modern browser engines they are already supported in "standard" so it is not necessary to prefix.
– Guilherme Nascimento