The prefixes -webkit, -moz, -ms and others are vendor specific prefixes used in pre production for css property/values. Once the property becomes part of the specs then the pre fixes are dropped and the rule in your example becomes.
As to why bootstrap includes prefixes is down to browser support at the time. User-select is quite new and without prefixes browser support is 68% but with prefixes added then browser support is 95%.
Therefore prefixes can be useful to increase browser support (not necessarily older browser but just those that haven’t implemented the correct specs yet).
The danger of prefixes and why I hardly ever use them is that they cause code bloat and indeed should the spec change as has happened in the past then the prefixed version may be wrong (just look at IE10 and flexbox).
The second danger of prefixes is that once they are in your code you will likely never remove them when they are no longer needed.
Frameworks like bootstrap will keep an eye on prefix support and likely drop specific items when browser support is good but I guess most users will not bother once the page is coded.
If you want to know whether you should be using a prefix or not then you can look on the caniuse site I posted above and see what the current browser support is like. If support is pretty good and the property does no harm then drop the prefix. If you need the property and support is only under the prefix then you can use it with care.
I prefer not to use prefixes unless I really need the feature they support and in most cases would try to keep a graceful fallback in the design should that feature be missing.