Why do some states need quotes in conditions and others don't?

I was struggling to get this config working:

- alias: "SWITCH kitchen light on when movement is detected."
  trigger:
      - platform: state
        entity_id: sensor.kitchen_motion
        to: 'true'
  condition:
    - condition: and
      conditions:
        - condition: state
          entity_id: alarm_control_panel.ha_alarm
          state: disarmed
        - condition: state
          entity_id: light.kitchen
          state: off
        - condition: numeric_state
          entity_id: sensor.aeotec_zw100_multisensor_6_luminance
          below: 10
  action:
      - service: light.turn_on
      entity_id: light.kitchen_lights
      - service: switch.turn_on
        entity_id: switch.kitchen_corner_lights
      - service: notify.all
        data:
          message: It's all light in the kitchen.

but HA is showing an error when I check it:

Invalid config for [automation]: extra keys not allowed @ data['condition'][0]['conditions'][1]['state']. Got None
not a valid value for dictionary value @ data['condition'][0]['conditions'][1]['condition']. Got None. (See /config/configuration.yaml, line 180). Please check the docs at https://home-assistant.io/components/automation/

Turns out that the state for light.kitchen needs to be in quotes, while the state for the alarm in the conditions above is perfectly valid.

        - condition: state
          entity_id: light.kitchen
          state: 'off'

Why is that?

on / off, true / false are special words that evaluate to the numbers 1 and 0. If you want to compare them as strings (words) they need to be in quotes to tell HA to treat them as words.

If you use an editor like VSCode that has yaml syntax highlighting it will alert you to these special words with colour.