This is an explanation of what's optional in IEEE and R5RS Scheme, grouped for ease of understanding.
Laziness: delay, force, eager
Macros: define-syntax, let-syntax, letrec-syntax
Lists: list-ref, list-tail
Strings: list->string, string->list, string-copy, string-fill!
Vectors: list->vector, vector->list, vector-fill!
Multiple values: call-with-values, let-values, let*-values, values
Eval: eval, null-environment, scheme-report-environment
Arithmetic: Subtraction and division with more than two arguments
REPL: interaction-environment
Files: with-input-to-file, with-output-to-file
Loading: load
Inexact rationals: exp, log, sin, cos, tan, asin, acos, atan, sqrt
Complex numbers: angle, imag-part, magnitude, make-polar, make-rectangular, real-part