What's the difference between `sh.setBalancerState(true)` and `sh.startBalancer()`?

In the documentation for sh.setBalancerState(), it says

Set this to true to enable the balancer and false to disable it.

For sh.startBalancer(),

Starts the balancer in a sharded cluster.

and its timeout parameter

Time limit for enabling the balancer.

Do “start” and “enable” mean the same action?
If not, what’s the difference?

Also, what is the interval parameter used for?

The frequency (in milliseconds) at which to check if a balancing round has started.

Does that mean the balancer may not start after sh.startBalancer() is called, and need to be checked regularly? And what if “a balancing round has NOT started”? Does it just wait for another interval?