What is a homomorphism? I am starting to see the term everywhere I look, but every time I do, I get confused and can't get past it.
I've seen various definitions: ("linear" homomorphism, i think)
$$f:S\rightarrow T $$
$$\forall x,y\in S, f(x+y) = f(x)+f(y)$$
$$ \forall x\in S,\alpha\in F,\alpha f(x) = f(\alpha x)$$
or a "group" homomorphism:
$$(G,\bullet)\text{ and }(H,\star)\text{ are groups}$$
$$\phi:G\rightarrow H$$
$$\forall x,y\in G, \phi(x\bullet y)=\phi(x)\star\phi(y)$$
Is a homomorphism a general term that could mean different things, or does it have a specific definition? Also, could someone give me an example in which homomorphisms are useful, and what is an intuitive way to think about this?
 A: It depends on the context: You can talk about homomorphisms of groups, rings, fields, vector spaces, modules, and so on. The key idea is that homomorphisms respect the algebraic structure of the underlying object; so in groups, homomorphisms preserve the group operation (i.e. $\varphi(xy) = \varphi(x) \varphi(y)$).
In a vector space, a homomorphism must preserve both the operations of addition and scalar multiplication, so we require
$$\varphi(x + y) = \varphi(x) + \varphi(y)$$
$$\varphi(c x) = c \varphi(x)$$
for vectors $x, y$ and scalars $c$ respectively. 

In many areas, it's more useful to study structure-preserving maps on an object, rather than just the object itself; this can encode additional information about the structure and its restrictions. For example in groups, the idea of a quotient group arises naturally from studying the kernels of homomorphisms (the kernel of a homomorphism is the set of elements mapped to the identity), which in turn leads to a very rich theory.
Alternatively, the set of bijective homomorphisms of a group form a group themselves, called the automorphism group, which in turn gives information about the original group.
A: Another way to think about it is that a homomorphism is a map that commutes with multiplication, addition, scaling - or whatever operations characterize your algebraic object. 
This is actually almost the definition if you think about how multiplication is defined in a group, for instance. (The only caveat being that the two multiplication functions are different functions, unless the homomorphism is an endomorphism.) In other cases, it is exactly the definition - a linear transformation is a group homomorphism that commutes with multiplication by a real number.
A good example is the distributivity property of multiplication over (for instance) the integers: $x(a + b) = xa + xb$. This means that multiplication is a homomorphism from the group of integers with addition to itself. 
Homomorphisms give you ways to relate different algebraic objects. For instance, there is a sense in which the integers sit inside the reals (both as groups with addition). This is established by saying that there is an injective homomorphism from one to the other.
Alternatively, there is a sense in which the group of rotations can be found by rolling up the real numbers to a circle (counting degrees modulo $2 \pi$). This suggests that there is a homomorphic surjection from the reals to $S^1$ (and indeed there is).
Often one is more interested in how objects relate to each other than how they actually are. In the algebraic setting, homomorphisms give a tool for talking about that. For instance, one of the uses of algebra is to describe invariants of spaces (circles, discs, spheres, tori, etc.), and use them to distinguish different spaces. Knowing how the algebraic invariants of related spaces are connected algebraically (via particular homomorphisms) is crucial to exploiting this.
Another use is to classify objects up to isomorphism (bijective homomorphisms) - many algebraic objects may appear different (the group symmetries of the triangle, the group of permutations of three letters), but turn out to be the same. 
A: A generic definition can be given in terms of algebraic structures.
Given a functor $T : \mathcal Set\to\mathcal Set$, a $T$-algebra is a pair $(A,\alpha)$ where
$$\alpha : T A \to A.$$

For groups, $T$ is defined by (note that a map $f : A+B\to C$ is a pair $f_1+f_2$ where $f_1 : A\to C$ and $f_2 : B\to C$)
$$T A := 1+ (A\times A)+ A.$$
A group is then a pair $(G,\alpha)$ (technically, we should also specify the group axioms this pair satisfies), with
$$\alpha : 1+ (G\times G)+ G\longrightarrow G$$
where we take
$$\text{id}_G := \alpha_1(*)\qquad g \star_G h := \alpha_2(g,h)\qquad g^{-1} := \alpha_3(g).$$

Now given two algebraic structures $(G,\alpha),(H,\beta)$, we define a homomorphism $k : (X,\alpha) \to (Y,\beta)$ as a map making the following diagram commute:
$$\require{AMScd}
\begin{CD}
T X @>{T(k)}>> T Y\\
@V\alpha VV @VV\beta V \\
X @>{k}>> Y
\end{CD}$$
where $T(k)$ lifts the map $k$ to $TX\to TY$ in a natural way (this is implicit by the functoriality of $T$).

For groups, say we have $(G,\alpha), (H,\beta)$ and a map $k : G\to H$, then the natural lifting of $k$, $$T(k) : 1 +(G\times G)+G\longrightarrow 1 + (H\times H) + H$$ is given by the triple $k_1 + k_2 + k_3$ where
$$k_1(*) := *\qquad k_2(g,h) := (k(g),k(h))\qquad k_2(g) := k(g)).$$
Now we can apply the condition above to $(*,(g,h), g)\in TG$ to obtain
$$k(\alpha(*,(g,h),g)) = \beta(T(k)(*,(g,h),g))$$
If we unpack this, this means

*

*$k(\text{id}_G) = k(\alpha_1(*)) = \beta_1(*) = \text{id}_H$

*$k(g \star_G h) = k(\alpha_2(g,h)) = \beta_2(k(g),k(h)) = k(g) \star_H k(h)$

*$k(g^{-1}) = k(\alpha_3(g)) = \beta_3(k(g)) = (k(g))^{-1}$
which is precisely the definition of a homomorphism for groups, although in the case of groups we can derive conditions 1 & 3 from 2.
