Reachability (both Apple's sample code, and other people's similar code, and the underlying SCNetworkReachability will tell you either that there is no internet access, or that you will get internet access through WiFi, or that you will get internet access through mobile data.
If you have both WiFi and mobile data available, it will tell you "WiFi". There is no way to find out that mobile data is available when you have WiFi. (You can easily find out that mobile data is available when there is no WiFi). You cannot find out if Airplane mode is turned on (which would be different from WiFi and mobile data turned off).
WiFi available doesn't guarantee that a download will use WiFi and not mobile data. You might start a download at home, leave a minute later, WiFi disappears, and iOS will happily continue downloading through 3G. You can set a flag in the download call to disallow 3G. The error code will be -1009 = No internet access, no mention that 3G would have been available.
Using CTTelephonyNetworkInfo you can find out that you are on a device that could have mobile data (not an iPod Touch or iPad without mobile data, and there is a SIM in the device).