I wrote a book a few years back that tries to explain IP addressing. It's available free online now as an e-book. To answer your question, I think the best way to understand IP addressing and subnetting is to forget all of the tricks and shortcuts and take the time to understand the binary/Boolean math behind it. If you haven't worked with Boolean math before, start there. Once you understand that, IP addressing will be simple.
This was first published in June 2002