One of Gregor Mendel's great discoveries was the Principle of Dominance. He noted that when he hybridized two parents with different versions of a particular trait, one of those versions apparently disappeared in the hybrid (heterozygous) offspring. If he then mated those offspring to each other, the vanished trait reappeared in the third generation, apparently completely unchanged despite being invisible in generation 2. He named the version of the trait which was visible in the hybrids the dominant and the one that was invisible in the hybrids the recessive.
We now know that Mendel discovered complete dominance, which is only one of several different kinds of dominance relationships. Dominance relationships result from the interactions of the gene products of different alleles of the same gene (not from interactions between different genes). Note that dominance is virtually always defined with respect to the phenotypic of the heterozygote.
Complete Dominance: If two alleles have a complete dominance relationship, the phenotype of the heterozygote will be indistinguishable from the phenotype of the homozygous dominant. For example, for one of the gerbil fur color genes, that wild type agouti/brown allele (B) is completely dominant to the black (b) allele of the same gene. BB gerbils are brown; bb gerbils are black; Bb gerbils are brown. And you can't tell by looking at a brown gerbil whether it is BB or Bb, no matter how closely or carefully you look.
Incomplete Dominance: If two alleles have an incomplete dominance relationship, the phenotype of the heterozygote will be intermediate between the phenotypes of the two homozygotes. This is often described as "blending," though the alleles themselves do not blend. The phenotype of looks like the two traits have blended together. For example, in snapdragons, one of the various genes which control flower color has two alleles, one for red flowers and one for white flowers. The two homozygous plants will produce red and white flowers, respectively. But the heterozygote will produce pink flowers--as if the two homozygous conditions were blended together like paint. In this case, the actual flower color (phenotype) probably results from varying amounts of production of the red pigment. The homozygous red plant produces a lot of the pigment, the homozygous white plant produces none of the pigment, and the heterozygote produces half as much as the homozygous red. Note that there is no dominant allele here.
Codominance: Codominance is similar to incomplete dominance in that there is no dominant allele. However, the phenotypic expression is quite different. If two alleles have a codominance relationships, in the heterozygote both alleles will be completely expressed. For example, in humand ABO blood types, two of the three alleles (the A allele, properly designated as IA, and the B allele, properly designated as IB) are codominant. This gene controls the deposition of antigenic markers on cells. A person with blood type A (homozygous for IA or heterozygous for IA and the recessive i (for O type)) has one kind of antigen marker, while a person with blood type B (homozygous for IB or heterozygous for IB and the recessive i (for O type)) has a slightly different kind of antigen marker. The heterozygote has blood type AB, and this person's cells have both A antigens and B antigens on their surfaces. There is no "in-between" antigen, as would be expected if the alleles showed incomplete dominance. Both of the alleles are completely expressed, and the person has both blood types at the same time.
Pseudodominance: In some cases, the relationship between two alleles appears to be one of complete dominance, but actually isn't. Clues that a dominance relationship is one of complete dominance would be that there are only two phenotypes for that trait (as in the brown/black example above, vs the red/pink/white result from incomplete dominance), and that when you make a monohybrid cross (mate heterozygote to heterozygote) your results give you quite a few more offspring with the "dominant" trait than with the "recessive" trait, and that one of your phenotypes would be able to "hide" alleles for the other phenotype. Note that in our example of complete dominance above, the heterozygous brown gerbils were hiding the presence of their recessive black alleles. These alleles could be discovered only by breeding to see if the black color would be revealed in offspring. So how could two alleles have these characteristics but not have complete dominance? The answer is that there are cases in which one of your possible allelic combinations is lethal--that an offspring which inherits this particular combination dies during development.
For example, in fruit flies there is a gene called "curly." There are two phenotypes for this gene--the normal, straight winged flies, and flies whose wings curl upward. Straight winged flies can't give birth to curly winged flies, but if you mate two curly winged flies, some of their offspring will be straight winged. And they will always have more curly offspring than straight offspring. This all sounds exactly like complete dominance, with curly being dominant to straight. But if you examine the results from the curly x curly mating more closely, they actually don't meet expecations for complete dominance. When you perform a monohybrid cross for a gene with complete dominance, your offspring numbers will fit the "3 dominant:1 recessive" phenotypic ratio. Curly x curly gives a 2 curly:1 straight phenotypic ratio. This is very odd all by itself, as genetics is very much a binary business; it just shouldn't give ratios that add up to three; they should all add up to some multiple of two.
The explanation for this oddity is that curly is not really dominant to straight. Homozygous curly flies never hatch out of their eggs. For reasons which are unknown, homozygotes for this allele always die before hatching, and are thus never counted among the living offspring. The genotypic ratio from this mating is exactly what you expect it to be: 1 curly-curly:2 curly-straight:1 straight-straight. But the curly-curly flies all die, so the living offspring are 2 curly-straight:1 straight-straight, and thus the 2 curly:1 straight phenotypic ratio. If this were truly complete dominance, the curly-straight flies would have the same phenotype as the curly-curly flies (see above). But the phenotype of the curly-curly flies is "dead."
Dominance, of course, is all about phenotype. And a lot more goes into shaping the final phenotype than just dominance. Phenomena like variable penetrance, variable expressivity and epistasis all impact on how genes are expressed. No gene exists or functions in a vacuum; all of them operate in a cellular and organismal environment created by and influenced by all of the other genes in the organism. In addition, many traits, such as the fur color and flower color traits used above as examples, are actually impacted upon by more than one gene. And, of course, there is always the external environment to be considered as well.