Structures of proteins: In all modern day organisms, proteins play a wide variety of roles in the cell. At the molecular level, they are responsible for performing all the mechanical work done by your muscles (as known until now) in addition to the chemical catalysis that they perform on nearly all biochemical reactions inside the cell . The immediate question that begs to be answered "How are these complex molecules able to perform this work? How are they so specific in what they do and specific to the reactions that they catalyze?" While the answer to these questions are nontrivial and the subject of research of more than half the biophysics labs world wide, the common theory going around in the scientific world is that the function of a protein is determined by its structure . This statement is only partially accurate and the reasoning behind this statement is that a protein functions because it is able to have a certain 3-dimensional configuration of certain atoms or functional groups in the amino acids that make up the active site of the protein and these functional groups are then able to catalyze the reaction. The specificity of the reaction they catalyze comes from the specific 3-dimensional configuration of these functional group that it is able to catalyze only when the substrate is able to interact with it in a certain manner. While it is true that the structure does determine how a protein will go about performing its function, these structures are static pictures of the molecule which is otherwise in motion . In addition to the global motion of the molecule, there are relative motions of the atoms that make up the protein which leads to slightly different configurations of the important functional groups and hence they are neither completely specific nor is the function completely dependent on its structure alone.
Classification of Protein Structure: The average protein consists of about 20000-30000 atoms and in order to make sense of the structure of the protein, it is necessary to simplify the protein structure. There are more than 30000 structures in the protein database  and to go about looking at each structure would be horrendous. Hence, one needs to come up with a classification scheme for protein structure.
One way of simplifying it is to break it into parts called the secondary structure of the protein. There are various courses/books [1,2] to explain the secondary structure, but for our discussion, it is sufficient to know that certain configurations called alpha helices and beta sheets are common structural motifs found in nearly all proteins. While these secondary structures do help in understanding the local structure of the proteins, they give very little insight about the chemistry that the protein is able to perform and about it's active site itself.
A second and more meaningful attempt at classification of protein structure would be to find certain common structural motifs that can exist independently and classify the proteins based on these structural motifs. For example, a protein can be multifunctional but each function can be carried out independently by different parts of the protein even if you split them up. It could make sense that one can split these multifunctional proteins up based on what function they perform and if you can find the same structure/function motif in different proteins, club them together as a single group. In a protein, the part of the protein that can maintain its structure and function independently is called a domain . Quite often domains of one shape combine with domains of very different shapes to form quite different proteins (very much like building blocks can come together in various different configurations giving walls of various different shapes) .
To give meaning to the classification scheme, it would also help to know which proteins perform related function (for example, perform the same reaction on different substrates) or have active sites in the same region of the protein structure. In order to give meaning to this classification, it is better to form groups of more closely related structures that perform similarly. Great minds have always argued that evolution should be the guiding principle while studying biology and it does make sense to classify proteins which have a common evolutionary origin from those that have achieved the same structure independently (also called convergent evolution).
There are various different databases that divide proteins into individual domains and divide these domains up into evolutionarily related groups heirarchically. These databases include the SCOP (Structural Classification Of Proteins) (manually divided), CATH (Class,Architecture, Topology, and Homologous superfamily) , and FSSP (Families of Structuraly Similar Proteins) databases (automatically performed). However, these databases are often flawed and corrections to these databases are often suggested in literature. Part of the problem is it is very difficult to say when similarity in structures occured due to homology (evolutionarily related), or convergence (evolutionarily independent origins). The trivial relationships are those that are apparent in the sequences of the two proteins. When two proteins have very similar sequences (measured by the number of times they have the same amino acid or a slightly related amino acid in the same position of the structure), they are related and statistics based on extreme value distributions can be used to find the probability of both proteins having a common origin . However, the structure remains conserved (does not vary much) much more than sequences and below a certain sequence identity, it is very difficult to prove that there is a relationship between the two proteins without a structure .
Other problems that come up are related to the process by which structures are obtained (X-ray crystallography or NMR spectroscopy). These methods are inherently noisy because of various problems such as Heisenberg's uncertainty principle onto the crystallization conditions and the substrates that interact with the protein. So there is never a completely correct structural alignment (that is finding one to one which residues in the structure overlap each other) that also causes minor problems in the classification procedure.
But the most important problem is the level at which to classify structures. While domains are the most commonly used level of classification (because a domain is basically independent), during the evolution process, domains might not have been the basic level at which proteins were constructed. Rather subdomain level small structural units called structural words  or foldons  (because they could be independent folding units) could also be the smallest level of proteins that had evolved from the RNA world. The theory is that these foldons could come together and form various different domains and then evolved further to form proteins with different functions.
 - Biochemistry by Stryer.
 - Introduction to Protein Structure by Branden and Tooze.
 - A perspective on enzyme catalysis by Stephen Bankovic and Sharon Hammes-Schiffer
 - RCSB protein database.
 - Domains.
 - Multi-domain protein families and domain pairs: comparison with known structures and a random model of domain recombination by Gordana Apic, Wolfgang Huber & Sarah A. Teichmann.
 - SCOP.
 - CATH.
 - FSSP.
 - How far divergent evolution goes in proteins - Murzin.
 - Maximum Likelihood Fitting of Extreme Value Distributions - Eddy..
 - On the evolution of protein folds - Lupas, Ponting, and Russell.
 - Foldons, Protein Structural Modules, and Exons by Anna Panchenko, Z. Luthey-Schulten, and P.G. Wolynes.