Can I couple non-terminals in context-free grammars? If I had productions like so...

$S \rightarrow A1B$

$A \rightarrow \epsilon$

$A \rightarrow 0$

$B \rightarrow \epsilon$

$B \rightarrow 1$

If I only want strings $\{\epsilon1\epsilon, 011\}$, am I allowed to choose when both $A$ and $B$ become $\epsilon$? Or will I get resulting strings such as $\epsilon11$ and $01\epsilon$? (I know the $\epsilon$'s disappear, but I just left them in to avoid confusion.)

If I get the unwanted strings, then how would you force both $A$ and $B$ to be $\epsilon$ only when you need them to be, while still having $A$ and $B$ result in different terminals?
In your case, the desired language is finite, so you can just go

$\qquad\displaystyle S \to 1 \mid 011$.

If you had recursion, say

$\qquad\displaystyle S \to ASB \mid 1$

as starting rule, you can not force "matching" $A$ and $B$ to behave in sync.
There are more powerful types of grammars that can do that, but that's beyond
the power of context-free.