( This part assumes Windows users are using Cygwin. If you aren't, TortoiseSVN is a good client. )
Building on Windows is slightly complicated. You can either use Microsoft Visual C++ or MinGW. MinGW works better currently; both methods are described in the readme you already are supposed to have read.
If you've come up with an improvement or fixed something, we'd love to hear about it! Firstly, try to make sure that the patch breaks less than it fixes. We don't require everyone to be decorated Geniuses, but do attempt to produce a patch that you've tested and at list sort-of understand what you're doing.
The preferred way to get the ball rolling on a patch is to file a Bugzilla bug for your request with the patch attached to it and then send a notice to the mailing list about it. If you're really so lazy that you can't do this, we would prefer you at least mail it to zakk@icculus.org rather than not do anything at all.
Please don't send in patches that you didn't create. You can feel free to alert people and discuss anything on the mailing list, but please only submit patches for inclusion if you are the original creator!
If you know how to code, but never made a patch before, that's okay. Here's the 10ยข survival guide to generating patches.
If you checked the source code out with SVN, the client makes it rather easy to generate patches. In fact it's a function of the client itself. Once you've made a change in your checkout that is not upstream, here is how you use it:
For more information on SVN take a look at the SVN book and the info pages for svn.
If you didn't get the source code via SVN, or for some reason that doesn't work for your situations, here's how to generate them using the tried-and-trusted diff tool between two files:
For more information on diff and patch, read their man-pages.