Quick summary: Graceful degradation means using newer features that may not be supported everywhere but providing a solid fallback experience. Progressive enhancement means developing with the most widely supported features and using newer ones only when supported.
The big advantage of graceful degradation is developing with the latest and greatest standards. But this means that you must write extra code to address specific issues in older browsers.
Progressive enhancement is the opposite of graceful degradation. Instead of using the newest standards, progressive enhancement starts with only a base set of features that are expected to work for all users. This means that applications are developed with older browsers in mind first, and newer features are only shown on browsers that support them. For example, rounded corners using
border-radius are not supported in IE8, but a site developed with progressive enhancement in mind would ignore the non-rounded corners in IE8 (showing square corners instead), but show them rounded on browsers that fully support
The advantage of progressive enhancement is being confident in a baseline of features that all your users should be able to use. The disadvantage is that you are not always taking advantage of the latest standards, and extra work must be done to show the "enhanced" experience.