Strictly speaking, this expression isn't an equation; rather, it's a reaction (a definition of a generic elementary reaction in chemical kinetics, to be precise). I think using labeled reaction
environment from chemmacros
's reactions
module suits this case much better: this way one can also address it later both in text and in the list of reactions.
As for the troubles with math inside the chemical environment, chemformula
's manual covers this case well (this has also been mentioned by polyn in the comments):
8.2. Math
If you especially want to input math you just enclose it with $ $
. This output is different from the escaped text as it is followed by a space. The reasoning behind this is that I assume math will mostly be used to replace stoichiometric factors.
\ch{ $⟨escaped math⟩$ }
One of two possibilities to escape chemformula
’s parsing into math mode.
\ch{ \(⟨escaped math⟩\) }
The second of two possibilities to escape chemformula
’s parsing into math mode.
Additionally, I would use roman typeface for the textual subscripts instead of italics, and also denote forward and reverse rates with more common notations used in kinetics: k_fwd and k_rev instead of k_f and k_b, correspondingly. The subscript "f", for instance, is ambiguous and denotes "formation" or "fusion" in physical chemistry.

\documentclass[12pt]{article}
\usepackage{chemmacros}
\chemsetup{modules=all}
\begin{document}
\begin{reaction}
$\sum_{s=1}^{N\sb{s}}\nu'_s$ X_{$s$}
<=>[ $k_\mathrm{fwd}$ ][ $k_\mathrm{rev}$ ]
$\sum_{s=1}^{N\sb{s}}\nu''_s$ X_{$s$}
"\label{rxn:generic-kinetic-model}"
\end{reaction}
Reaction \ref{rxn:generic-kinetic-model} is elementary.
\listofreactions
\end{document}
\ch{<=>[ $k_f$ ][ $k_b$ ]}