IInputElement is returned as the return type, because that type is a common interface for both UIElement and ContentElement. You can then cast the return type appropriately, or use the interface instance for certain members that are defined by the IInputElement interface.
This method typically is not called from your application code. Calling this method is only appropriate if you intend to re-implement a substantial amount of the low level input features that are already present, such as recreating mouse device logic.
IContentHost contracts an InputHitTest method with the same signature, which some elements choose to implement explicitly.