According to http://www.w3.org/Addressing/ a UniformResourceLocator (URL) is
The set of UniformResourceIdentifier schemes that have explicit instructions on how to access the resource on the internet.
Or, in other words, the URL is the actual address of a resource on the network. URLs are a subset of UniformResourceIdentifiers. Contrast UniformResourceNames, an indirection layer that eventually return URLs.
URLs aren't really the actual address. One still may have to go through the DomainNameService to retrieve the IP and then further through a network protocol. Finally, the actual resource exists on a VirtualFileSystem which may be mapped to an actual file system in any way. Indeed, the IP address resolved by the DNS may only be proxy to a vast internal network on the foreign site.
However, all these mechanics are (usually) unimportant. They represent, for all intents and purposes, the location of the resource in the network space of the internet.
For the BackusNaurForm grammar of URLs, see http://www.w3.org/Addressing/URL/5_BNF.html or the more generic grammar on "UniformResourceIdentifier".
See RFC2396.
Examples
ftp://example.org/pub/images/rockie-mountains
http://usemod.com/cgi-bin/mb.pl
By the way, the reason why mailto: and news: do not have two forward slashes (//) after the protocol identifier is because they are fetched from local servers, not remote servers.