Alternative subequations numbering and references
It's possible to do it, but the name I gave to the environment should clear up my opinion about it. ;-)
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{environ}
\makeatletter
\newsavebox{\horriblesubequationsbox}
\NewEnviron{horriblesubequations}[1]{%
\setbox\horriblesubequationsbox=\vbox{
\hsize=\dimexpr\linewidth-8em\relax
\begin{subequations}
\renewcommand{\theequation}{\alph{equation}}
\vspace*{-\baselineskip}\vspace*{-\abovedisplayskip}
\noindent\strut
\begin{align}
\BODY
\end{align}
\end{subequations}
\addtocounter{equation}{-1}%
}%
\begin{equation}\label{#1}
\hspace*{4em}\left.\vcenter{\unvbox\horriblesubequationsbox\unskip}\right\rbrace
\end{equation}
}
\makeatother
\begin{document}
Some text here
\begin{horriblesubequations}{eq:full}
y_1 &= f_1(x) \label{eq:first} \\
y_2 &= f_2(x) \label{eq:second} \\
y_3 &= f_3(x) \label{eq:third}
\end{horriblesubequations}
\dots and now I can reference the full set as equations~(\ref{eq:full})
and for example the first as equation~(\ref{eq:first}).
Some text here
\begin{horriblesubequations}{eq:full+}
y_1 &= f_1(x) \label{eq:first+} \\
y_2 &= f_2(x) \label{eq:second+} \\
y_3 &= f_3(x) \label{eq:third+} \\
y_4 &= f_4(x) \label{eq:fourth+}
\end{horriblesubequations}
\dots and now I can reference the full set as equations~(\ref{eq:full+})
and for example the first as equation~(\ref{eq:first+}).
\end{document}
Beware that, as the code stands, the global label is mandatory.
Here is a manual way of setting the tags and specifying the references. It seems appropriate since there is a disconnect between what is labelled and referenced. Typically they're the same so there is no ambiguity to the reader, but in this case there is not (say) equation (1a).
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\ltxlabel}{\ltx@label}
\newcommand{\settag}[1]{
\tag*{(#1)\qquad}
\edef\@currentlabel{\theequation#1}}
\newcommand{\setmaintag}[1]{
\tag*{(#1)\qquad\llap{(\theequation)}}
\edef\@currentlabel{#1}}
\newcommand{\setref}[1]{\edef\@currentlabel{#1}}
\makeatother
\begin{document}
Some text here
\begin{align}
\stepcounter{equation}
y_1 &= f_1(x) \settag{a}\ltxlabel{eq:first} \\
y_2 &= f_2(x) \setmaintag{b}\ltxlabel{eq:second}\setref{\theequation}\ltxlabel{eq:full} \\
y_3 &= f_3(x) \settag{c}\ltxlabel{eq:third}
\end{align}
\dots and now I can reference the full set as equations~\eqref{eq:full}
and for example the first as equation~\eqref{eq:first}.
\end{document}
\ltxlabel
allows one to set the \label
immediately, which is otherwise deferred until the \tag
is set within an align
.
No consideration for hyperref
was given, nor tested. The same goes for the "maybe" options in the question.
For an even number of equations, you can move the main equation up/down as needed:
Some text here
\begin{align}
\stepcounter{equation}
y_1 &= f_1(x) \settag{a}\ltxlabel{eq:first} \\
y_2 &= f_2(x) \setmaintag{b}\ltxlabel{eq:second}\setref{\theequation}\ltxlabel{eq:full} \\
y_3 &= f_3(x) \settag{c}\ltxlabel{eq:third}
\end{align}
\dots and now I can reference the full set as equations~\eqref{eq:full}
and for example the first as equation~\eqref{eq:first}.
\begin{align}
\stepcounter{equation}
y_1 &= f_1(x) \settag{a}\ltxlabel{eq:first2} \\
y_1 &= f_2(x) \settag{b}\ltxlabel{eq:second2} \\
y_2 &= f_3(x) \setmaintag[\dimexpr.5\normalbaselineskip+.5\jot]{c}\ltxlabel{eq:third2}
\setref{\theequation}\ltxlabel{eq:full2} \\
y_3 &= f_4(x) \settag{d}\ltxlabel{eq:fourth2}
\end{align}