1. In fact, all these solutions work in basically the same way. If you want to multiply x by y, hold up (x - 10) fingers in your left hand, (y - 10) fingers in your right hand and then calculate as follows:
100 + 10((x - 10) + (y - 10)) + (x - 10)(y - 10)
That is, 100 + (10 times the fingers up) + (the product of the up fingers). For example, 13 * 14 gives (|||..) and (||||.). The calculation yields 100 + 7*10 + 3*4 = 100 + 70 + 12 = 182.
Why does this work?

2. To go from 5 to 15, you do almost the same thing except that if the number is less than 10, you put up a number of fingers that is the difference between 10 and your number. Further, you consider that number of fingers to be negative. The formula remains the same (we proved it above without knowing x and y after all):
100 + 10((x - 10) + (y - 10)) + (x - 10)(y - 10)

For example, 9 times 13 would entail raising (|....) and (|||..) but now the one finger for the 9 is considered negative 1. So we get 100 + 10(3 - 1) + (-1) * 3 = 100 + 20 - 3 = 117.

In fact we can also use this to multiply 7 times 8, though less elegantly than with the original method. We get (|||..) for 7 (10 – 3) and (||...) for 8 and compute as follows:
100 + 10(-5) + (-3) * (-2) = 100 - 50 + 6 = 56

3. To go from 5 to 20, we stick with the same formula but now each pair of hands represents the difference between the factor and 10 (either positive or negative). For example, to multiply 16 by 18, we would put up (|||||)(|....) in the first pair of hands and (|||||)(|||..) in the second pair of hands. Then we calculate as follows:
100 + 10(6 + 8) + 6 * 8 = 100 + 140 + 48 = 288

To compute 14 * 17, we'd put up (||||.)(.....) in the first pair of hands and (|||||)(||...) in the second pair of hands. Then we calculate:
100 + 10(4 + 7) + 4 * 7 = 100 + 110 + 28 = 238.

One could even extend this idea to numbers over 20:
400 + 20((x-20) + (y-20)) + (x-20)(y-20)
= 400 + 20x - 400 + 20y - 400 + xy - 20x -20y + 400
= xy