The vendor specific prefixes allow a playground for vendors to define and test things their own way without setting expectations for things that are not standardized, are being standardized, or have not even been conceived of yet.
It's like the X- prefix on mail and HTTP headers.
The problem is when browser #2 wants to implement blink. They shouldn't use your prefix, so they now have webkit-blink. And the HTML writer now needs to sniff the browser.
Progress?
p.wibble { -moz-blink: slowly; -webkit-blink: 10%; -ie9-blink: "Microsoft.XML.Autocompositor(alpha=99,blinkrate=14692,emulate-old-ie-versions=false,true,true,false)#ie9" }
or whatever. (In practice everyone who provides these properties does so in a very similar manner, so it's easier than the above pseudosnippet suggests.)