Where to start? Find a project that interests you, or one where you already reported some bug. Depending on your skills, it may be better to choose a project which doesn't have a huge codebase (quicker iterations possible), but does have more than one developer (you'll get quicker responses).
How to start? Get as much information as possible about the project: what's the dev/review strategy (github pull requests / mailing list / review board / ...), do they have contribution guidelines, do you have to sign any forms, etc. Browse through existing issues - some projects label easy bugs as "entry level" or similar. They're a good way to get involved.
Have a look at other contributions and find make sure you know what checks they go through. Make sure you're not wasting other developer's time. For example be sure that your new code passes all tests and adheres to the project coding guidelines. If it looks like it may need updated documentation, include updated documentation. If it looks like it may need extra explanation, make sure to include it in the patch.
The only thing that's common in open source communities is that every one is completely different and has its own rules. :) (And that they're mostly based on free time contribution and mutual respect)