Why not just ask him whether he is willing to answer additional questions? He knows how busy he is, how interesting your project is for him, and how dumb (if any) your questions are. You can also offer to pay him back by writing a (partial) manual on his code, as you go on understanding it.
If I was to receive this kind of email I would see that you are acknowledging my effort and trying to be respectful with my time. And maybe this will be good for me, forcing me to rethink aspects of the code, and make a mental note of doing better documentation in the future.
Also, in that situation, I would greatly appreciate to be kept in the loop about your project. Even if I can't or won't help, I would like to see the the progress.
A quick answer is usually a good sign, it means that he finds your questions interesting and not something you should have been able to figure out by yourself. In any case, if you want to make sure, you can ask someone that is roughly familiar with that code (probably your advisor), and see if the questions are indeed something you should have been able to figure out by yourself; and if you are not, they should teach you the techniques you are missing to do it.
All this said, I have been given messy code to work with three times, and the three of them I ended up grabbing the paper and reimplementing it myself in a couple of days (and in two of them, the result was way better). Maybe your case is too big, but you should consider it.