Python 3.0 represents not a nuancing or revision of previous Python versions but a significant change in philosophy of how the language should operate. By far, most of the changes are in the internals of the language, operational aspects that are largely hidden by the interpreter. These changes are nonetheless far reaching and cannot help but be manifest in the syntax of the language. One of the most important places where the language has changed is in giving full support to Unicode by default. See "Full Unicode Support" for background to this guide.
The distinction between text as str and data as bytes carries through every part of Python 3.0. It is not relevant just to the way variables are assigned or how information is received. The distinction is all-encompassing. This guide will give you a feel for how far-reaching the consequences of the disctinction are and how you can best navigate problems that might arise from it.