Yes. The behavior of the full system can be changed. But not how you did.
% mit-scheme
MIT/GNU Scheme running under GNU/Linux
....
1 ]=> (pe)
;Value: (user)
1 ]=> (ge system-global-environment)
;Package: ()
;Value: #f
1 ]=> (pe)
;Value: ()
1 ]=> (define + 1)
;Value: +
Move back to user environment (which is the same environment where initial REPL environment points to).
1 ]=> (ge user-initial-environment)
;Package: (user)
;Value: #[environment 12]
1 ]=> (pe)
;Value: (user)
1 ]=> (+ 1 2) ; no more
;The object 1 is not applicable.
;To continue, call RESTART with an option number:
; (RESTART 2) => Specify a procedure to use in its place.
; (RESTART 1) => Return to read-eval-print level 1.
2 error> (assoc 'car
(environment-bindings
system-global-environment))
;Value: (car #[compiled-procedure 1351
("list" #x1) #x1c #xe0f67c])
So you can change the CAR (which is defined in system-global-environment) in the same way I changed the +.
But, of course, this is a bad idea, your system won't work any more.
There are some internal procedures that are using car or +, which are compiled. Those that are compiled won't make reference to the system-global-environment and continue to work. Those that are not compiled will crash. Now, depends on how your system was booted, to see which ones make reference to the system env. If some library procedures are loaded in the system without compilation, it is for sure to crash.
Note that when I say "compilation", it means in general other way of interpretation other than calling the interpret/eval function, it means to bypass the standard interpreter. If you use a byte-compiler whose virtual machine makes reference to system environment, that procedure compiled as bytecode will crash. If the code is fully compiled to x86 or mips, it has its own referenced to standard library procedures written in assembler and it won't make reference to global environment. Everything is possible in a scheme system.
If you re-define the procedure in the user-environment (as you did), the system will continue working, as the standard library procedures point to the system environment and no system procedure will see the user environment. But all the procedures that you load in the user-environment will use your own definition of car. In this case, it is okay to redefine the things.
Note that the command (load "xxx") has an optional argument called environment and you can use this option to tell load what environment to change by loading to. By default, in batch-mode and REPL mode, load will write into the user-environment whose parent is system-env. But you can do tricks as the library load-option does, and manipulate environments into a very complex way (a library that creates modules).