What is the difference between footprints and symbols?


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 land 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. More details see this other FAQ topic)

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 pin/pad “number” is not necessarily a number. In kicad 4 it can be any string of lenght less than 4. In KiCad 5 this length limitation will be dropped.

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 specified symbol) or later 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 about how to assign footprints to symbols 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)

How does KiCad know which symbol pin is connected to which pad of the footprint?
Designing the pcb and schematic problem
FAQ Index Thread
How does KiCad select Project-Specific over Global Libraries?
High level thinking
Newbie staring into the deep end of the pool w/ Cvpcb
Tutorial: How to make a footprint (From scratch)?
Creating DIP Sockets
How do I change path segment?
How do I change path segment?
How to add G6K-2P-Y from github Lib to Layout
Footprint editor frustration- 15 resistor DIP array
Trying to create a PCB with holes
Looking for thru-hole tactile switch with LED
BGA pin mapping
Rats nest behavior [resolved]
[Solved] How to link the pads with each other?
Looking for footprint of an SMD oscillator
Assign Footprints 'Apply, Save Schematic & Continue' What does it do?
Netlist issue loading
What kind of symbol to use? (Audio connector)
Can not open .NET file
Connectors_IEC_DIN and correct libraries use
Where find resister (no smd)?
MSK-12C02 switch package
Noob Q... update footprint
Help to source, install and manage libraries?