My knowledge of cheese making is extremely lacking, but what determines how hard or soft the final cheese product is when making your own cheese?
Harold McGee, in On Food and Cooking, is very detailed in his explanation of how cheese "works". He describes three stages.
In the first stage, lactic acid bacteria convert milk sugar into lactic acid. In the second stage, which overlaps with the first one, rennet (an extract of calf stomach - or, to be more precise, chymosin, a protein found in this extract and now also obtainable from yeasts and the like) curdles the casein proteins and watery whey is drained from the concentrated curds. And finally, in the third stage, the cheese ripens, and a whole host of different enzymes do all sorts of things to flavour and texture.
According to McGee,
Acid and Rennet form very different kinds of curd structures -- acid a fine, fragile gel, rennet a coarse but robust, rubbery one -- so their relative contributions, and how quickly they act, help determine the ultimate texture of the cheese.
He goes on to describe how mostly acid coagulation leads to softer cheeses and mostly rennet-based coagulation leads to firmer curds and harder cheeses.
Draining of the whey also strongly affects the final texture, as Sobachatina points out in her excellent answer. Pressing firmly expels much whey and thus leads to a harder cheese; softer cheeses are just allowed to drain some whey by gravity. But there's another important factor here: heat. Some cheeses are "cooked" in their whey at this stage, to a temperature as high as 55C (130F) for a rock-hard Parmesan or about 38C (100F) for a somewhat softer Tommes, and this expels even more whey from the curd particles (and, of course, also affects flavour).
At this stage, salt is also added. Salt draws some moisture out of the curds as well and is a catalyst for the denaturing of casein, thus reinforcing the protein structure.
McGee also discusses aging of cheese at some length, but he doesn't really touch on the effect of aging on the structure of cheese. That effect is certainly there; a very young Gouda cheese is almost as soft as a Camembert, whereas a very old one gets close to Parmesan hardness (if it doesn't crumble to dust). I imagine that this is due to some moisture escaping the cheese, but also due to the fact that the protein networks keep growing more and more interconnected as the cheese ripens.
It is mostly about how much water is left in the curd- how hard and long you press it, aging, and sometimes microbial growth.
Soft cheeses like cream cheese are only barely pressed. Fresh soft cheeses like queso fresco and paneer aren't even pressed at all- just hung to dry.
Cheddar is pressed firmly and aged for a relatively short time.
Cheeses like parmesan are pressed firmly and then aged for months to over a year. Most of the liquid leaves during pressing and then they also dry considerably.
Some cheeses like Camembert are unique in that the mold that grows on them softens them as it digests compounds in the cheese. This is what gives Brie, etc, their unique texture.
Actually, pressing is a minor player in the moisture level control. How large or small the curds are cut...were the curds cooked after cutting, how long after adding rennet were the curds cut (the longer the more moisture is retained, how much salt is in the process (either in cheddaring or brining or dry salting) all play a bigger part than pressing in determining how much moisture is in the cheese.
IN a nutshell...moisture level determines the "softness" of the cheese.
There are, btw, soft rennet coagulated cheeses.