Let's go by parts into your problem.
First of all, please check this topic
, where the process of including a new API is described.
That process will allow you to select between various API versions.
Secondly, the reason of unplugging Xbee to allow uploading a code to Waspmote is because USB and Xbee shares UART0 of the microcontroller (you can read in this forum a lot of topics regarding this). Therefore if you do not unplug your Xbee, it will interfere with USB port making uploading process impossible.
However, in OTA, communication is only between Xbee and Waspmote and the code is uploaded by the Xbee, not by USB.
Please, we kindly ask you to read carefully check-list post
and follow all steps. If you find any issue please let us know.
Also we recommend you to read Waspmote technical guide
, where hardware inside Waspmote is described and also the tips for right usages.
Try to upload the test code with API version 21 to see if your hardware is working well.
Waiting your comments.