Good approaches to implement more than one time-critical function using a microcontroller?
To output precise square waves, use the hardware.  Most microcontrollers have PWM generators built in that can do this.  You set the period and on time in clock cycles, and the hardware does the rest.  To change it to a new frequency, write the new period into the period register and half the period into the duty cycle register.

As for real time clock losing time due to other load of the processor, it doesn't work that way unless it is very poorly written.  Generally the hardware would be used to create a periodic interrupt that is some multiple of seconds, and the firmware divides further from there.  This works regardless of how busy the processor is, since the interrupt runs whenever it needs to.  As long as the interrupt routine takes a small fraction of the overall cycles, most of the processor is still applied to the foreground task.

There are also ways to keep time by polling at somewhat unknown intervals.  You have the hardware keep a count, and whenever you get around to updating the clock, you update it based on the total number of elapsed ticks.  As long as this routine is run often enough so that whatever counter is used doesn't wrap between runs, no time is lost.