One is about 'what all' & other is about 'where all' accessible.
Resources can be scoped, i.e. resources can be defined at various levels of the application hierarchy.
Resources defined at a certain scope are available to all elements in or below that scope. Application resources are at application level.
In most applications, the number of resources grows quickly and must be managed early in the application lifecycle. Thus, Resource dictionaries are used to group related resources, then those resource dictionaries are merged at the Application or other required scope.
Following will explain you in detail:
Creating and Consuming Resource Dictionaries in WPF and Silverlight[
^]