I know some of the differences such as garbage collection and 64-bit support, but I have a book based on 1.x and I was wondering if I would be wasting my time learning off of that, and then, stepping up to 2.1 after reading?
Many Objective-C programmers learned version 1 before learning version 2. You would not be wasting your time learning from that book, but once you've finished with it and you're comfortable with version 1, then you can move on to learning version 2. If you ever have to target older Mac OS X systems it is important to know the differences between the two versions.
Objective-C 1.0 code is still valid Objective-C 2.0 code. I have met a few programmers that even prefer Objective-C 1.0 over Objective-C 2.0.
2.0 vs. 1.0 isn't a very useful distinction as the lines are considerably more blurred. Dreamlax's answer is correct, but only when applied to the syntax (and, even then, there are some holes).
In particular, there is the syntax of the language to consider and there is also the ABI; the actual binary format to consider. There are also features that only work in LLVM.
The good news, though, and as dreamlax said, is that you generally really don't care so much about 2.0 vs. 1.0, either syntactically or from an ABI perspective. From a syntactic perspective, use the features you want and be done with it. From an ABI perspective, 1.0 vs. 2.0 is academically interesting but will be invisible to your code. Most of the details generally only become an issue for authors of frameworks and large applications. Mostly.
In any case and off the top of my head:
Garbage Collection is only available in Mac OS X (i386 and x86_64).
@property is a syntactic Objective-C 2.0 feature, available on all platforms and compilers.
Blocks are an extension to C, compatible with Objective-C, and, as of iOS 4 are available on all platforms and compilers.
Blocks and C++ are only supported in LLVM 2.0, a compiler that is not yet released, but is available from http://llvm.org/
@synthesize of instance variables is only available in the Objective-C 2.0 ABI (as are non-fragile iVars, which are what it is based upon).
Automatic synthesis of @property implied ivars are in LLVM 2.0, currently as an experimental feature.
poseAsClass:
is deprecated in i386 and removed entirely in x86_64 & iOS (i.e. does not exist in Objective-C 2.0 ABI)Objective-C 1.0 ABI exposed class innards as structures. Objective-C 2.0 provides API for getting and editing just about all of the innards (file bugs on any missing pieces, please), thus allowing said innards to change in the future.
"Zero cost exceptions" and "Unified C++/Objective-C Exceptions" are both only in the Objective-C 2.0 ABI, though the implementation details are significantly different between x86_64 and ARM.
I'm sure I'm missing some stuff.