Does graphhopper have the functionality for all of this?
You should be able to get all the routing specific functions done with GraphHopper. Not sure what you mean with specific ways, but there is a lot to customize.
Displaying the location of a vehicle has nothing to do with GraphHopper, you just need a Server/DB. The vehicle sends the location to the server. You frontend gets the location from the server.
Aerial tiles are available from different providers. You should be able to find different providers. Integrating them into your frontend is very easy and can be done in a couple of minutes (at least for the GraphHopper demo frontend).