This is all you need to know. There are a few projects out there that are ridiculously tight-knit and don't readily welcome newcomers to the developer team, but they are rare--if you bring the code, the team will generally welcome you. Bigger projects are more likely to have people around of varying skill levels to help you get up to speed--Apache, for example, has developers at all levels working on all sorts of projects within the whole...you will find people willing to help you get your feet wet. Smaller projects might have the labor so tightly focused on one or two part-time developers that they are unwilling to take time out to help a newbie. This is probably counter-productive in the long-term, but one must realize that a lot of times folks come into projects, asking lots of development questions, primarily for one specific niche feature...they wave their hands a lot, and make a nuisance of themselves until that one feature is finished (either by them or, more likely, by someone else) and then they're gone, never to be seen again. Bigger projects have enough people willing to take the risk that you're going to come and go and the time they spent helping you get up to speed will be lost.
However, bringing the code first (even small bugfixes) insures that everybody knows you're in it because you want to make the project better.
This is pretty spot-on. Find something you like to use or are interested in. If you want to get involved in coding, you should start with some minor bug fixes. For instance, Django has a separate list of "easy improvements" to encourage newbies to get involved (http://code.djangoproject.com/wiki/LittleEasyImprovements). You generally should not try and go for a major bug fix right off the bat, because if your code does not follow the convention for that project or the direction in which it is going, your patch will probably be rejected.
Coding aside, most open source projects are also hurting for things like proper documentation, testing on multiple platforms, plugins, and a good-looking accessible website, so you should just find the intersection of your skills and interests with what the project lacks and go on from there.
- Subscribe to the relevant development mailing lists
- Start using the development version of the software (from CVS, SVN, Git, whatever)
- Subscribe to any relevant community newsfeeds (planets, news sites)
If you're using the development version of software, you'll invariably hit horribly annoying bugs. Dig in, find the fix, generate a diff and mail it to the development mailing list. In the odd case of not stumbling into annoying bugs, the bugtracker will have a long list waiting for you. Rinse, wash, repeat.