To answer the question, there are several ways of doing it:
1. Gang together binary counter ICs and connect the outputs to 7-segment driver ICs to drive leds for the digits. You will need to set the counters to reset at the appropriate numbers (e.g. 60, 60, 12/24). driving this from a 555 timer would be problematic because 555 timers rely on a very simple RC timing circuit that is not very frequency accurate and won't be stable over time.
2. Use a crystal oscillator and divide it down to 1 Hz to drive the same arrangement as above. Typically, one would select a crystal with a frequency that is divisible by a power of 2, such as 32.768 kHz (2^15 = 32768 Hz), and use binary counters to divide the frequency down.
3. Use a microcontroller with a crystal for the clock reference and multiplex the outputs to drive the 7-segment displays. The frequency accuracy of this method will depend on the way in which the program is coded. There are probably a zillion tutorials on how to do this online, so I won't go into detail here.
4. Use a microcontroller with an external RTC IC to keep track of the time, and use the microcontroller to multiplex the data to the segment displays. Typically one can get RTC ICs that can communicate with the microcontroller via a serial protocol such as SPI or I2C. Using an external circuit to keep track of the time eliminates the need for precise timing in the code.