We must start from the basics, so let's revise NAT terminology. NAT translates IP addresses in IP packets, right? What does that mean? That it, basically, creates mirages - yes, optical illusions, you know. For example, in a typical NAT configuration when private-addressed LAN hosts access Internet by using external router interface's public IP address those hosts appear for Internet servers as having this public IP (or IPs from a pool of public IPs). NAT does not create new physical hosts, of course - but it create kind of new virtual entities - in this example, the LAN hosts see themselves as, let's say 192.168.1.x but Internet servers see them as 203.0.113.x - one set of physical hosts but two sets of IP addresses. Two distinct sets of (logical) hosts. Optical illusion. And the terminology is this:
- inside local - "real" IP addresses of the internal hosts as assigned to their interfaces and as they see each other
- inside global - "mirage" IP addresses as seen by the outside world
- outside global - "real" IP addresses of the external hosts as they seen by themselves and by (almost) entire Internet
- outside local - "mirage" IP addresses as we see external hosts (if we asked NAT to translate correspondingly)
And as you can see, we are obliged to make a distinction between our network and the Internet or another external network. We do this by marking our router's IP interfaces as either ip nat inside or ip nat outside, agree?
Now let's remember how NAT is usually implemented: it maintains special tables that contain entries about translations. And the important point is that these entries can be created either statically or dynamically. For dynamically created entries, the direction of traffic is important - is the traffic initiated from inside to outside or vice versa? For static entries, this is not so - they are symmetrical. NAT configuration statements that contain the static keyword create static entries immediately after putting them into the running config; those with the dynamic keyword watch for the interesting traffic and dynamically create translation entries, which will then eventually time out.
We can already speculate about your last question: why there is no outside destination option? ip nat inside source static creates static NAT entry that translates exactly as you described, but this includes not only the traffic initiated from one particular side - static NAT entries are symmetrical. So, ip nat outside destination static would create a static entry for translating destination IP addresses of traffic entering into your network from the outside AND source IP addresses for traffic going from inside - but this is exactly what ip nat inside source static command does! So, it's simply redundant to have this command. The only difference is that you would interchange the source with the destination ip when using one or another form of basically the same command.
In regard to your first statement, "there are three possible combinations of inside/outside/source/destination that can be configured" - this is not quite so. The point is that, generally speaking, NAT configuration statements are not "math formulas" and should be considered wholly, and not as builded logically from independed keywords. So, each "combination" presents a solution for a particular task, for example, ip nat inside destination list is used for configuring server TCP load balancing that uses specific algorithm and does not work with UDP. Also, (in modern IOSes) there is no ip nat inside destination static command - have you actually tried it with the static option?
You can see some particular scenarios of using NAT including configuration examples in this Cisco paper: http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipaddr_nat/configuration/12-2sx/nat-12-2sx-book/iadnat-addr-consv.html
Finally, I would like to mention that sometimes NAT is not what you want, for example, look at my answer for this "canonical question": https://serverfault.com/questions/55611/loopback-to-forwarded-public-ip-address-from-local-network-hairpin-nat/733532#733532
PS Should I go into more details?