Sum of all multiples of 3 or 5 below 1000 (Project Euler #1 - typical)
Minor

Paren placement

Hanging parens are an eyesore.

Global var

Use defvar instead of setq to create global variables.

Sharp-quote for functions

You should do (apply #'+ ...) instead of (apply '+ ...).

Unnecessary allocation

Since your range returns a fresh list, you can use nunion instead of union.

Major

Sum

Your sum function is broken - it will not work on long lists, see CALL-ARGUMENTS-LIMIT.

Here are better ways to do this:

(defun sum (list)
  (reduce #'+ list))

(defun sum (list)
  (loop for x in list sum x))


Performance

union is probably quadratic in your implementation, so you might want to consider another approach for larger values of 1000 :-)