Is it okay to have numbers and decimals in variable names in ConTeXt?

Only letters (with MkIV you can also use Chinese or Arabic letters) are allowed in command names but you can use other methods to have indexed strings.

The first method is \setvalue to create commands with numbers and access them afterwards with \getvalue.

\setvalue{RL.3.1}{Ask and answer questions to demonstrate understanding of
                  a text, referring explicitly to the text as the basis for
                  the answers.}

\setvalue{RL.3.2}{Recount stories, including fables, folktales, and myths
                  from diverse cultures; determine the central message,
                  lesson, or moral and explain how it is conveyed through key
                  details in the text.}

\setvalue{RL.3.2}{Describe characters in a story (e.g., their traits,
                  motivations, or feelings) and explain how their actions
                  contribute to the sequence of events.}

\starttext
\getvalue{RL.3.1}
\stoptext

Another way is the \setvariables command where you set a text for each key. The texts can then be accessed with \getvariable.

\setvariables [RL]
  [3.1={Ask and answer questions to demonstrate understanding of a text,
        referring explicitly to the text as the basis for the answers.},
   3.2={Recount stories, including fables, folktales, and myths from
        diverse cultures; determine the central message, lesson, or moral
        and explain how it is conveyed through key details in the text.},
   3.2={Describe characters in a story (e.g., their traits, motivations,
        or feelings) and explain how their actions contribute to the sequence
        of events.}]

\starttext
\getvariable{RL}{3.3}
\stoptext

If you want the key-val-method you can set the variables text with the \setvariable command.

\setvariable{RL}{3.1}{Ask and answer questions to demonstrate understanding
                      of a text, referring explicitly to the text as the basis
                      for the answers.}

Another method is to use buffers to store the text and access them later with the \getbuffer command.

\startbuffer [RL.3.1]
Ask and answer questions to demonstrate understanding of
a text, referring explicitly to the text as the basis for
the answers.
\stopbuffer

\startbuffer [RL.3.2]
Recount stories, including fables, folktales, and myths
from diverse cultures; determine the central message,
lesson, or moral and explain how it is conveyed through key
details in the text.
\stopbuffer

\startbuffer [RL.3.2]
Describe characters in a story (e.g., their traits,
motivations, or feelings) and explain how their actions
contribute to the sequence of events.
\stopbuffer

\starttext
\getbuffer[RL.3.1]
\stoptext

If I ask ConTeXt to \show\def, the answer is

\def=\def

which means the primitive \def is unchanged with respect to standard (Lua)TeX.

An instruction such as

\def\rl.3.1{whatever}

is perfectly valid in TeX, but it just (re)defines the control sequence \rl to have parameter text .3.1 and replacement text whatever.

In particular, TeX requires \rl to be followed by the exact four tokens

.3.1

and any other call of \rl would lead to an error

! Use of \rl doesn't match its definition.

Note that \rl .3.1 would behave the same as \rl.3.1, because spaces following a control word are ignored during tokenization.


How about using the variable system in ConTeXt? Your example could be translated into this:

\setvariables
  [RL]
  [3.1={Ask and answer questions to demonstrate understanding of a text,
        referring explicitly to the text as the basis for the answers.}]

\starttext

RL.3.1: \getvariable{RL}{3.1}

\stoptext