Resources can be anything, though they are typically documents of some type.
URLs identify a resource by its location, and do not have any connotations of uniqueness since a resource's location may change over time. URNs identify a resource via a persistent name, and do guarantee uniqueness in that a given URN can only refer to one resource, forever. RFC 2396 says that URIs are composed of sequences of abstract units called characters. While the URI specification mandates specific purposes for some of these reserved characters, others are just earmarked 'reserved' without having semantics defined. This is so that their reserved purpose can vary in different situations.