I am concerned about what should I set the compileSdkVersion, minSdkVersion, and targetSdkVersion to be.
My concern
minSdkVersion: This is the minimum API level your application need to run the app (i.e. if you set it at API level 16 (Jelly Bean) then your app can't run on API level 15 (IceCreamSandwitch)). In fact Google Play will not show your app on the phone running on API level lower than your minSdkVersion API level. Using API level 15 (IceCreamSandwitch) covers more than 90% of Android phone.
targetSdkVersion: API level for which you design your app to run. Recommendation is to use the latest version (at present 26 - O)
compileSdkVersion: API level you want to compile your app (if you use features of API level of 26 then you need to use 26, lower version will give you error). Android supports backward compatibility (i.e. app compiled on 23 can also run on phone having API level 22 or lower). So answer to your first question is YES. Recommendation is to use the latest version (at present 26 - O)