What is the difference between a Spigot (Bukkit) server and a "vanilla" Minecraft server?
A "vanilla" Minecraft server essentially means that it is unmodified and is in the original format direct from the creator (Mojang). You can download this version directly from the Minecraft website. It has no support for plugins at all, but there are server mods that will work which will require you to modify the internal contents of the server file itself.
Spigot, on the other hand, is a modified version of the vanilla Minecraft server file. The Spigot team has modified in such a way that it allows for plugins to be used with the game, even though it did not allow for such features originally. This is both a good and bad thing. It is good in that you are able to use plugins to expand what is possible with a vanilla server and to make gameplay more enjoyable. However, since Spigot and all plugins are created by third parties and are unofficially supported, there are bound to be bugs which can cause anything from lag to server crashes. Despite the potential issues, the fun factor usually outweighs the problems.
The separation of vanilla Minecraft, Spigot, and plugins is what causes a lot of problems whenever Minecraft is updated. Since Spigot and plugin developers do not work directly with Mojang (the developers of Minecraft), they have to wait for the update to come out first, just like all regular users. Thus, whenever Minecraft is updated, Spigot may have a delay of several hours to a few days before they can even release an experimental (read: unstable) build. It takes a bit longer for a recommended (read: stable) build to be released. Once Spigot has reached a stable build, that is when plugin developers will usually start to update their plugins to support the latest Spigot properly since experimental builds of Spigot change too often for them to keep up.