Another thing not mentioned by the other two responders. Scheme is a lisp-1 (single namespace), elisp and CL are both lisp-ns (multiple namespaces). This means that you can have a variable in CL or elisp that shares a name with a function or macro, but the same is not true in scheme.
;; valid elisp and cl, same result in each
(defun foo (bar) (+ 1 bar))
(defvar foo 4)
(foo foo) ;; makes perfect sense in CL and elisp,
;; but none in scheme
;; syntactically valid scheme, won't work on the last line
;; which translates to (4 4) and so makes no semantic
;; sense.
(define foo (bar) (+ 1 bar))
(define foo 4)
(foo foo) ;; will break in scheme because foo is now 4
;; and 4 can't be applied as a function
Barring issues with lexical versus dynamic scope and a few other things, a fair amount of elisp code and CL code will run in the other language (if you don't account for the differences it may still run, but the output will be different between the two languages). You can even (require 'cl) in elisp and have a decent amount of CL functionality added into your emacs instance.
Simple things like function and variable definitions have to be changed to get even basic code (like the above) to half-way work in scheme from elisp.
Simple things like function and variable definitions have to be changed to get even basic code (like the above) to half-way work in scheme from elisp.