"If I register a variable I can't access it on the same script, right ?"
Yes and no.
Normally you create a variable in the global scope, then call session-register() to register it.
At that point, the variable already exists, but it did not come from the session (you created it by hand). The next time you run a script that uses the same session, the var will be created from the session.
If you use $HTTP_SESSION_VARS to access the variables, then newly registered variables will not appear in the HTTP_SESSION_VARS array until the next time you run the script.