The CBA's not actually that complicated, you just have to go into it with a completely blank slate. It's a little bit like learning a second language.
This^ (in a big way).
In particular, the way the CBA controls certain things means you have to be very careful with reading the wrong meanings out of the actions/inactions of players/GMs in regards to contracts.
Saying a player "doesn't want to extend" or "wants to reach free agency" does not at all mean he wants to leave a team. In CBA terms, what it mainly means is that he wants to sign a new contract instead of extending his current one (whether with his current team or not is a separate issue).
But if you don't understand the CBA nuances, it is easy to just interpret such phrases as meaning "he wants to leave the team." And that's what a lot of fans and media do.
Ditto for when a team decides "not to offer an extension". It may mean they don't want to keep that player. Or it may mean that they do, but with a new contract with new terms that cannot be reached with an extension.
The problem with the CBA right now is that it has some rather extreme and seemingly arbitrary differences in the terms that can be reached depending on whether it is a new contract or a contract extension and so on. This can make it very confusing for fans who don't have the nerdy inclination to spend hours reading Larry Coon's fine NBA CBA faq:
http://www.cbafaq.com/salarycap.htm