But to answer your question.
findViewById() returns a generic View. There are many objects that use the View type as a base object.
ImageView is a specific type of View which has more properties then the generic View type.
Its kind of like this
View, by itself does not know about the extended properties of ImageView, which is why you have to cast it or you get warnings/errors.
You can see the relationship between View and ImageView here
https://developer.android.com/reference/android/widget/ImageView.html.
Hope this helps clear things up somewhat.