I'm not exactly clear on when :hover was created or by whom. It was included in the May 1998 CSS2 specification and I believe Microsoft's Internet Explorer 5.5 beta in December 1999 was the first browser to implement it (but only for the "a" tag, which is still true today). I've seen reference to Microsoft having invented it and contributing it the CSS specification. It was subsequently supported in other browsers.
In many ways you could argue the ubiquity was actually an abuse of the function, and I've seen blogs decrying it as a crutch for bad user interface design (an easy hack to selectively show content that otherwise didn't fit into the layout). On the other hand it could also enhance the user interface by providing feedback to users regarding what was "interactive" and what wasn't or providing contextual information depending on with what element a user was - or was about to - interact.
Then along came "touch" interfaces. PalmOS, iOS, Android, WebOS - all the mobile operating systems for touchy-feely devices like the Blackberry, Droid, iPhone, iPad, iPod Touch, Galaxy Tab, etc. They don't DO hover effects. Why? Because the "hover" represents a proximity-based feedback and touch devices have no way to detect if you are "near" or "about to interact" with an element. You're either touching it or you're not.
click = "Tap" (click actually generates a mousedown+mouseup, so tap is a touchstart shortly followed by a touchend event)
dblclick = Two quick "taps" (dblclick is rarely used, but technically you could script touch events looking for two taps in quick succession on a single element)
contextmenu = touch and hold (keeping in mind this triggers default touch callouts for things like saving images or copying text. If you wanted it to display a custom context menu you'd have to disable the default touch callout and try to detect a touch and hold event by timing how long a touchstart on an element sustains without a touchend event)
Additionally, in the "mouse centric" desktop world you only have ONE pointer. It's ALWAYS on the screen at some coordinates. In the "touch centric" world the "pointer" doesn't exist until a finger touches the screen, and in the case of multi-touch interfaces you might simultaneously have five or ten "pointers" to track on the screen!
What does that mean for the web? It means as pages are optimized for interaction with touch interfaces all the "mouse-centric" methods will go away, relegated to obscurity. The word to the wise these days is to not only design for mobile devices, but to design for TOUCH interfaces. That means you don't use :hover or :active in your CSS anymore. That means you add support for touch events and selectively disable mouse events (because there is inconsistency between mobile devices regarding the interpretation of mouse events as touch events - a single touch can trigger a slew of mouse events all at once, which can cause unwanted results if you've coded the page to do certain things depending on each mouse event).
There simply is no touch event that is similar to hovering, so don't use it anymore. Actually the W3C was aware of this from the start as the CSS2 specification state that some input methods (it specifically mentions pen input, which is a lot like single-point touch) as not being able to support the :hover pseudo-class. If stylus input methods had become popular at the start of the 21st century we'd probably have seen :hover fade away before it even got going. But here we are decade later and touch is input method of choice. Sorry :hover, you have to die. The mouse will likely be keeping you company in your crypt soon enough.