In general, on a per target basis, you really don't need to change the default. I recall a case a while back with a new feature, and the APAC versions of a watch had an older CIQ than the ROW versions, it was used so the APAC versions wouldn't be considered compatible devices. (You can't select APAC and ROW devices separately - the 235 as a target is both the APAC and ROW versions. (ROW=rest of world)
When you get into 1.x vs 2.x devices, that's really based on the device itself (the 235 is 1.x while the 735 is 2.x, for example).
There are things available with 2.x that aren't with 1.x, and what should happen, is if you use a 2.x only function when simulating a 1.x device, you'll get an error in the sim, assuming you're using one of the latest sdks.
There are also things that may not be available on all 1.x (or 2.x) devices. An example of that is getHeartRateHistory(). That's only available on watches with wrist based HR (a built in OHR sensor).
To see what's what, the place to look is the API documentation in the SDK. You'll see "Since: 2.1.0", meaning you can't use it on 1.x devices, and in some cases you'll see "compatible devices" (in the case of getHeartRateHistory() )
There is a way to adjust your code for these types of things in many apps, and that's using "has". With getHeartrateHistory(), you can use "has" to see if it's available before you try to call it, and the same with 2.x calls and 1.x devices.
Are you running into some specific problem with your code?