You have not specified any mobile platform so i am answering here for the most popular android platform.
If you want to render the map in android device you can then use mapsforge library. There is a plugin for osmosis called mapwriter that will help you convert the .osm data into .map data which can be rendered using the mapsforge library. .map is a binary format and can be used for fast on device rendering on mobile devices with limited processing power.
The sad part however is that you cannot feed this data to a routing engine but there is a workaround for this. You can use gharphhopper , which is an open source java routing engine. You have command line tools to create graphhopper graph files which you can use to query using gharphhopper API. The great thing about this is that it will enable you to do routing without being connected to the internet.
I have been working with the kathmandu data and the data for kathmandu(the map file and the graphs) is just over 10 MB which is really cool.