There is quite a bit of information about global variables in the manual. I recommend you get familiar with these pages:
[man]session_register[/man]
Predefined Variables
Using Register Globals
The great thing is, this "book" is free, too! Just click the links 🙂
I'm not trying to be a jerk and tell you to RTFM. I know sessions can be confusing if you have never dealt with them before. Let me see if I can explain them for you. But before asking many more questions, do try to read those pages I linked for you above -- there is a lot of useful information.
Let's assume you have register_globals set to ON in your php.ini file. You create a page, and it takes a variable foo passed through the query_string like so:
http://www.yourserver.com/coolsite/mypage.php?foo=bar
Your file, mypage.php, will have access to the global variable $foo. It's value will be "bar." With me so far? No, this has nothing to do with sessions yet. Bear with me here.
The reason $foo is available is because the PHP server automatically registered the variables in your query string (called GET variables). I won't go into the problems this can cause, but it is a security risk (read the links above!).
The important point to note here is that PHP must store that $foo value somewhere. It does, in a special array called $GET. $GET contains all of the variables passed in through the query string (through the GET method). So, because it's been automatically registered, it is available as $foo. It is always available as $_GET['foo'], regardless of the setting of register_globals.
With me still? Hopefully you know this stuff already. If so, then you also know that this applies to POST variables as well, passed from another form via the POST method. Those variables are always available from $_POST.
These special arrays are called superglobals. There are others -- $ENV, $SERVER, $COOKIE, and (drumroll please) $SESSION!
The thing you must remember is that $foo and $_GET['foo'] point to the same data: "bar." They are not two different things, but simply two different methods of accessing the information. Yet another way is $HTTP_GET_VARS['foo'].
The same applies to $SESSION. When you use session_register("foo"), you are telling the server "please make the $SESSION['foo'] variable available as "$foo." There is no need to do this, when all you can (and SHOULD) do is simply access the data through $_SESSION['foo'].
The old way to access the session variable "foo" was to use $HTTP_SESSION_VARS['foo']. That was not set automatically, however, and required you to use session_register. $HTTP???VARS variables are now deprecated (no longer used or supported), and so is session_register.
So, regardless of whether or not you have register_globals set, if you put a value in a session variable, it will always be available through the $SESSION variable. All you have to do to use $SESSION is tell PHP "I want to access session variables on this page." You do that with session_start().
To sum it up, and answer your question, there is no difference between the two methods of accessing the session variable, except for one: $foo will not be available if register_globals = OFF, which is the recommended setting for your PHP server.