Time measurement with timer 1

I successfully managed to implement a square wave signal generator with direct access to timer one.

Now I wish to do the opposite, get familiar with the concept of time measurement using the timer.

I guess that instead of loading the timer with a value I now let it free-run and set an interrupt. At this point the value of the timer is stored and some calculations are made with base on the system clock, the count number and any prescaller division.

Now the questions:

Is the above correct? Perhaps anything missing that might be important?
is there any example code I could use to get an idea?
How are filters implemented, for example, to make sure a frequency above the maximum limit is filtered, or a pulse with a very short duration is ignored?

PS: Yes, I am aware that there are lots of libraries to achieve time measuring functions.
The intent of the post is to get familiar with the concepts at a low level.

Is the above correct?

Yes.

Perhaps anything missing that might be important?

Some clue as to why you want to do that. The millis() function already returns all the time-related information that the Arduino knows.

How are filters implemented, for example, to make sure a frequency above the maximum limit is filtered, or a pulse with a very short duration is ignored?

By you.

See the duty cycle section.
Other great reading here.

casemod:
Now I wish to do the opposite, get familiar with the concept of time measurement using the timer.

This isn't an particularly sensible approach unless the pulses you're trying to read are arriving faster than can be read successfully using interrupts, or the timing resolution you need to achieve is better than 4 microseconds.