While your line would work (except for the align=0, more to that later), it's not nearly as efficient as it could be. At the very moment, you will create a rect that is 1px from the left, 1px from the top, 100px each wide and tall, in other words, totally pointless for whatever drawing purpose. The default drawing in RMXP's windows assumes 4px from the left, 0px from the top, a width depending on the window width, and a height of 32 for a single text line... in other words:
self.contents.draw_text(4, 0, self-width-40, 32, $game_variables[1].to_s)
I added the .to_s for converting the integer into a string before output, which you have to do, I think. Also for the align, my way of writing it was a mere respresentation of the definition, as there's somewhere in the hardcoded, hidden scripts a line that looks like this:
def draw_text(x, y, width, height, text, align=0) # actually, as this method supports rects afaik, it should look a bit different... however, this is about align right now!
The '=0' essentially means that if you don't put anything, 0 will be chosen by default. That means, if you want your text to be aligned left in the rect you specify, don't put any number there for efficiency of your script. However, if you do want to put a number there, like 1 for centering or 2 for right justify, you don't write 'align=1', but simply '1'.
For many at once, yeah, you can do how many you want to have. You should be careful to not put these into update definitions, but refresh definitions though, as it's a comparatively slow method that will soon make your game lag if called every frame. And yeah, you can of course include it in a HUD (for that purpose you might want to check out Yeyinde's Beginner's HUD Tutorial, which is really beginner's level and should give you a very good idea about stuff really), as you can include it in every window you draw. Every text you see that already is in the game has been drawn with this method, so you see it's quite universal.