First of all, it’s a wildebeest, also called a gnu. Those things run around in Africa and are a sort of antelope.
The GNU OS uses it as a mascot, because… well, because it’s called GNU, and the animal is called gnu as well, so two gnus make… I guess they make many little gnus if they happen to be male and female, but that is way beyond the scope of this site… Still, the how and why of the GNU mascot should be as simple as that. (Yet why it’s not many little gnus instead, the author has no idea.)
Then there is the penguin. His name (for it’s a male) is Tux, and his story is a bit more interesting.
I’ve been to Australia several times, these days mostly for Linux.Conf.Au. But my first trip—and the one when I was bitten by a ferocious fairy penguin: you really should keep those things locked up!—was in 93 or so, talking about Linux for the Australian Unix Users Group.
So the guy was literally bitten by a penguin. Way too cool to choose a mascot, by any standard. Tux stuck and became the official mascot of the Linux kernel, and by popular use (although not officially), the GNU/Linux operating system as a whole as well.
And why is the gnu figure omitted as much from the logos as the name GNU is from the nomenclature? Here just one possible reason:
Not a pretty sight is it? This is probably why penguins and gnus never mate in the wild. Yet, as they say, behind every successful penguin, there is a gnu. Or the other way around.