How to calculate the time of one single tick on microcontroller
To answer your first question.
Basically it is all the same with all microcontrollers and your calculation was correct.
In your example, with a 16 bit Timer and,
$$f_{\text{SystemClock}} = f_{\text{timer}} = 8MHz$$
As you said we have a tick in every,
$$T_{\text{timer}} = \frac{1}{f_{\text{SystemClock}}} = \frac{1}{f_{\text{timer}}} = \frac{1}{8MHz} = 0.125μs$$
With a 16 bit Timer it means,
$$ticks_{\text{max}} = (2^{16} - 1) = 65535$$
ticks. So the timer will overflow in every,
$$t_{\text{overflow}} = ticks_{\text{max}} \times T_{\text{timer}} = 65535 \times 0.125μs = 8.191875ms$$
You can count overflows to get a specific delay. Now if you want to change toverflow's value

You can divide the fSystemClock as the other answers mentioned it, and run your timer with a frequency different from the fSystemClock. This way you will have more time between two timer ticks and toverflow will be higher.
Or, you can set a maximum value for the timer so it will overflow earlier and toverflow will be less.

This way a lot of delay value can be achieved.