The current watering level applies when a program is scheduled — when a program starts, it uses the current watering level to adjust the duration of each zone. Once each zone is in the queue its time will not be adjusted again.
Yes you can set the watering level by using API. This can be done by using the /co command, and you can pass the wl (i.e. watering level) parameter through that command. Check the OpenSprinkler API document: