In general, point mutations are introduced in the proteins of interest during directed evolution. These can be specific mutations in the active site of an enzyme if you would like to change its specificity towards a new substrate, for example. The point mutations can be introduced with primers when you amplify your gene of interest. However, if you don't know specifically what changes to make, then yes, a way to generate mutations is by error prone PCR or by Quick change PCR. If you'd like to see if a certain amino acid change abolishes activity/stability/etc, you would do Alanine scanning (https://en.wikipedia.org/wiki/Alanine_scanning).
I haven't heard much about introducing deletions or insertions for directed evolution. First of all, they have to be in-frame, so that the overall coding sequence does not change. People are usually introducing epitope tags on the N- or C-terminus for two reasons: 1) to purify the proteins; 2) to increase its solubility. But in general, the introduction of deletion will lead to unpredictable changes to the 3D structure of the protein of interest.
The DNA shuffling is very often used for directed evolution. Here is a figure from a Nature paper  describing DNA shuffling. The way it is usually performed is by using sequence homologs of the protein of interest. The different fragments can be obtained by PCR-amplification and introducing short overlaps with the neighboring fragments. The fragments can be then assembled by various methods, including Gibson assembly and homologous yeast recombination. The advantage of DNA shuffling over introducing single mutations is that you have to screen fewer mutants and the activity/stability of the protein could be improved several hundred fold more.
DNA shuffling figure from 
Interestingly, a DNA shuffling using a method called SCHEMA  was developed in Chris Voigt lab. Shortly, SHEMA is a computational algorithm used to identify the fragments of proteins, or schemas, that can be recombined without disturbing the integrity of the three dimensional structure. It is based on the 3D structure (of one of the parents) and an alignment of the parental sequences. It calculates the interactions between residues and determines the number of interactions that are disrupted in the creation of a hybrid protein. A window of residues w is defined and the number of internal interactions within this window is counted. The window is slid and the schema profile is created. For example. in the figure below, the number of interactions that are broken in the possible chimeras are 0 on the right chimera and 3 on the left chimera. The right chimera will be used in the screening.
SHEMA method from