Please ask only one question at a time.
Question 1: OSM offers various ways for downloading data. In your case you should download a country extract.
Question 2: For displaying a map either use raster tiles or vector tiles. But before that you should decide whether you want to render your own tiles (in which case you will need some kind of tile server) or use available tiles from the web (in which case you will need constant access to the web).
Question 3: Ideally your C# application will just query a local PostgreSQL/PostGIS database.
Question 4: Which information? Everything? That would require lots of resources on the client for storing and querying the data.