1. File names- always use the hyphen.
2. Alt Text - use spaces and normal word structure. Ryan is correct on the technical intent behind the alt tag, but it can also be a good SEO tool, and you should treat those as exact phrase keywords. So nobody is searching for "city-bikes", they are searching for "city bikes". The alt tag should be what the user will put into google.