What are symbols
A symbol is an abstracted representation of the function of your component. At least it needs to have the pins that are present in your component.
Placing artwork into the symbol can make schematics easier to read. There are a few standards that define how symbols should look like. (As with all standards, they are incompatible to each other. Choose the standard that fits you.)
What is a footprint
A footprint represents the landing pattern of a component. (This is most likely given somewhere at the end of the datasheet of your component.)
It at least needs to contain all the connection points (called pads) to solder the component to. (Shape and size/ position of the pad should align with what is given in the datasheet.)
Pads define what features appear on copper, mask and paste layer (copper is the area that is covered by copper. mask gives the cutout in the solder mask layer, paste is the cutout of the solder paste stencil used for reflow soldering.)
The area where no other component should be placed is communicated via the courtyard area. This area is larger than the combination of pads and part body.
It is beneficial if it also contains an outline of the component body and a pin 1 marker on silk for soldering/debuging. (All of this should be visible after assembly -> meaning the silk outline is larger than the component body.)
Artwork on the fab layer is beneficial if you want to document your board. (At least it should then contain the exact body outline plus a pin 1 marker.)
Connecting symbol to footprint
In kicad the connection is done via the pin number given to the pins in the symbol and the pad number given to the pads in the footprint.
The second part of the connection is made via the footprint field of the symbol.
This field can be set either when creating the symbol (fully defined symbol) or lather when it is already placed in eeschema. (generic symbols)
For generic symbols there are two ways to select the footprint. Either via the symbol properties dialog/footprint browser or via cvpcb.
(cvpcb can be used to set the footprint fields of all used symbols at once.) More details see this FAQ entry
In KiCad nightly there is also the option to select the footprint via the component chooser. (This will also be included in KiCad v5)