In order to cope with babel that may make ; into an active character (with French, for instance), Tikz provides a definition for the active ; as \tikz@nonactivesemicolon which is just a standard category code 12 semicolon.
However, breqn changes the mathcode of ; to "8000 (hexadecimal, in decimal it is 32768), usually known as math active. This means that when TeX finds a semicolon in math mode it looks for its definition as an active character, which is \tikz@nonactivesemicolon that becomes ;, which is math active, so it is replaced by its definition, which is \tikz@nonactivesemicolon …
Infinite loop.
Of course, breqn defines the active semicolon in a different way, but in a tikzpicture (or tikz-cd which internally is a tikzpicture) this meaning is overridden.
You could input the semicolon as
\mathchar\numexpr"6000+`;\relax
but it's simpler to not use breqn.
\documentclass[11pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\usepackage{breqn}
\DeclareMathOperator{\Hom}{Hom}
\begin{document}
\begin{tikzcd}
0 \arrow[r] & \ker h \arrow[r] &
H(C\mathchar\numexpr"6000+`;\relax G) \arrow[r] & \Hom(H_n(C),G) \arrow[r] & 0
\end{tikzcd}
\end{document}
Note how I input \ker and define an operator name for \Hom.

A more friendly solution:
\documentclass[11pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\makeatletter
\protected\edef\tikz@nonactivesemicolon{%
\noexpand\ifmmode
\mathchar\the\mathcode`;
\noexpand\else
;%
\noexpand\fi
}
\makeatother
\usepackage{breqn}
\DeclareMathOperator{\Hom}{Hom}
\begin{document}
\begin{tikzcd}
0 \arrow[r] & \ker h \arrow[r] &
H(C;G) \arrow[r] & \Hom(H_n(C),G) \arrow[r] & 0
\end{tikzcd}
\end{document}
Note that also colon, bar and exclamation mark might give a similar problem. A complete fix:
\documentclass[11pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\makeatletter
\def\fixtikzforbreqn#1#2{%
\protected\edef#1{\noexpand\ifmmode\mathchar\the\mathcode`#2 \noexpand\else#2\noexpand\fi}%
}
\fixtikzforbreqn\tikz@nonactivesemicolon;
\fixtikzforbreqn\tikz@nonactivecolon:
\fixtikzforbreqn\tikz@nonactivebar|
\fixtikzforbreqn\tikz@nonactiveexlmark!
\makeatother
\usepackage{breqn}
\DeclareMathOperator{\Hom}{Hom}
\begin{document}
\begin{tikzcd}
0 \arrow[r] & \ker h \arrow[r] &
H(C;G) \arrow[r] & \Hom(H_n(C),G) \arrow[r] & 0:!|
\end{tikzcd}
\end{document}
breqn, it changes a lot of things that are not compatible with other packages and has several bugs. – daleif Nov 19 '18 at 13:40commathpackage if anyone stumbles on this same problem. – ZirconCode Feb 13 '20 at 09:44