This article is a little bit imprecise at times. It refers to pipes as FIFOs and seems to mix up FILE* and file descriptors.
Also it has a lot more IO redirection and not really much file descriptors except for the very beginning. The description of how redirection works is rather vague. There should be something about how the shell dup()'s over standard file descriptors to create redirection.