To make it simple let me explain this here in another way -
if you access any page lets say home.html, browser looks for html to render but home.html does not have any code(jsp, html etc), it only has few properties and components but it has sling:resourceType which tell server to include code from page resource type and execute it and add response to home.html. Thats why you see the page.html rendered code. Same thing happens for components as well.