If you open up your library -- just right-click on the library in Eagle and select 'Open' -- you'll see that Eagle breaks parts down into three separate 'chunks':
This is what is commonly referred to as the 'footprint'. It might be a standard package like SOT23-5, TQFP48, or 0603, or the 'footprint' may be a one off design, such as a special connector with drill holes in a specific location, etc
The symbol contains a representation of each 'pin' or contacts on the package, usually along with a descriptive label to say what that pin does (ex. 'TXD', 'GND', 'USBD+', etc.).
The 'symbol' is the bridge that connects your schematic to the physical PCB. There is also a rich visual 'language' around symbols that allows engineers to communicate functionality and intent, such as knowing that a two pin blob is a resistor, a capacitor, a diode, or a fuse.
It's very important to provide basic information (such as clear pin names) here, and respect commonly-defined visual 'terms' so that people understand what you are trying to say. There are two main families of symbols, one predominantly used in the US and the other predominantly used in Europe and elsewhere, but either is fine as long as you follow one of them:
You normally only have a single 'symbol' (some exception exist for very large and complex parts), but you can have multiple 'packages'. For example, we can define a standard 2-pin symbol for a resistor, and create a new 'RESISTOR' device. We can place our resistor symbol in the new device, and then add 10 or more different physical packages that we can use with that symbol (for example 0402, 0603, 0805, 1206, various through hole parts, etc.).
The advantage of separating packages and symbols is that we're allow to reuse common parts in this manner, and use existing packages across multiple parts. You will probably reuse the SOT23-5 package across a wide variety of devices, for example, from Voltage regulators to battery chargers to small sensors.