How does an app know, if GPS is faked? I have heard it is possible to simulate a GPS location with a developer option. 
However people get banned from Pokémon go, if they fake their location. 

Is this because an app knows, when it's a simulated location or did the people just fake it bad enough?
An app can detect when mock locations are enabled. It's quite simple to do. See https://stackoverflow.com/q/6880232/4107809.