Homotopy pullbacks and homotopy pushouts
You can think of the pushout of two maps f : A → B, g : A → C in Set as computing the disjoint union of B and C with an identification f(a) = g(a) for each element a of A. We could imagine forming this as either the quotient by an equivalence relation, or by gluing in a segment joining f(a) to g(a) for each a, and taking π0 of the resulting space. If two elements a, a' of A satisfy f(a) = f(a') and g(a) = g(a'), the pushout is unaffected by removing a' from A. The homotopy pushout is formed by gluing in a segment joining f(a) to g(a) for each a and not forgetting the number of ways in which two elements of B ∐ C are identified; instead we take the entire space as the result. It is the "derived" version of the pushout.
In general you can think of the homotopy pushout of A → B, A → C as the "free" thing generated by B and C with "relations" coming from A. But it's important that the "relations" are imposed exactly once, since in the homotopical/derived setting we keep track of such things (and have "relations between relations" etc.)
Another, possibly more familiar example: In a derived category, the mapping cone of a morphism f : A → B is the homotopy pushout of f and the zero map A → 0. This certainly depends on A, even when B is the zero object: it is the suspension of A.
Here's a simple geometric example for a homotopy pushout. This is stolen from the Dwyer-Spalinski paper on model categories.
We first look at the following diagram: pt <-- S^1 --> pt. The pushout of this diamgram is just a point.
Now look at D^2 <-- S^1 --> D^2 where the maps are the inclusion at the boundary. The pushout of this diagram is S^2.
What one notices is that the point and D^2 have the same homotopy type, but the pushout of the two diagrams have different homotopy types! So ordinary pushouts don't go well with homotopy theory.
The right thing to do is to always replace the maps by cofibrations before computing pushouts. This is precisely what the homotopy pushout does.
Replacing maps by cofibrations before computing pushouts is not just philosophy but actually a theorem. If you want to do things correctly you should put a model category strutcure on the diagram category such that the constant functor preserves fibrations and trivial fibrations and then take the derived colimit functor. Since you have a model category structure on the diagram category you replace diagrams cofibrantly! If you work out all the details you get replacing a diagram means exactly to replace the maps by cofibrations before taking the pushout.
For (2): they are the needed modification of the non-homotpy ones when you want the result to change only by an homotopy equivalence ff you change the input to the construction by homotopy equivalences.
Later: My intuition comes from the following image: say you have a space $X$ on which $\mathbb Z$ acts, and you want to take the quotient. I look at the homotopy version as the result of tacking the orbits: you attach a thread (a copy of $\mathbb R$) to each orbit... If later you want to take the "real" quotient, you just need to pull the threads, and the orbits contract to a point (I know it makes a funny noise when you do this!). When you take homotopy quotients by another group $G$, you need to get yourself a "$G$-shaped thread", which is what we write $EG$.