In special regards to the genes for curly hair, the trait of curly or straight hair in humans follows the rules of incomplete dominance. Using the letters C for curly and S for straight, the genotype for curly hair would be CC, for straight hair, SS and if an individual had both alleles CS, they would have wavy hair. That is because the two genes are incompletely dominant and are both expressed together because they will blend. Wavy hair is an intermediate texture between the two. If the grandparents had curly hair, and the child had curly hair(CC), this means that the child's parents had to either have curly hair(CC) or they could have had wavy hair(CS). Two wavy haired parents could produce a curly haired child if each passed down the C allele to the offspring.
The reason that a trait appears to "skip a generation" is usually that the trait is recessive. We all inherit two genes for every trait - one from each parent. Sometimes the genes match, sometimes they do not. In most cases, one version of the gene is dominant and the other version is recessive. A dominant gene will always be expressed in the person's appearance, while a recessive gene will only show if there is no dominant gene to cover it up. For instance, having freckles is a dominant trait. If one has either two genes for freckles (FF) or one gene for freckles and one non-freckle gene (Ff), one will have freckles. A person with two recessive non-freckle genes (ff) will not have freckles.
Therefore, a non-freckled woman (ff) could marry a freckled man (FF), and have all freckled children. However all the children would be Ff, having inherited a recessive f from their mother. If one of those children marries someone who has the f gene (either Ff or ff), they could produce children who are ff, and are non-freckled like their grandmother.