Project variants?

Not with groups exactly. I’d structure the code this way:

set(PROJECT_VARIANT "<DEFAULT>"
  CACHE STRING "Project variant")
set_property(CACHE PROJECT_VARIANT
  PROPERTY STRINGS "<DEFAULT>;VARIANT1;VARIANT2;NONE")

# Defaults for each option.
set(option1_default ON)
set(option2_default OFF)

# Select a default variant. Do this in case the default changes
# in the future, old build trees automatically get it too.
if (PROJECT_VARIANT STREQUAL "<DEFAULT>")
  set(PROJECT_VARIANT "VARIANT1")
endif ()

if (PROJECT_VARIANT STREQUAL "VARIANT1")
  set(option1_default OFF) # VARIANT1 doesn't want this option
endif ()

option(OPTION1 "docstring" "${option1_default}")