Here's a circuit description. I've used some jargon here; if there's any terminology or concept you don't understand, look it up on Wikipedia, or Google it.
The circuit uses two CD4093B quad NAND Schmitt trigger ICs. Each IC contains four NAND gates. Each gate has two inputs and an output. If both inputs are high (+9V), it drives its output low (0V). Otherwise, it drives its output high (+9V). This is called a NAND function: an AND function followed by a NOT function (inverter).
All points on the diagram marked +9V are connected together; this is the positive, "high" voltage rail of the circuit. All points marked with an earth/ground symbol are connected together; this is the 0V or "low" rail of the circuit. Two 100 nF capacitors are connected across these rails; these should be connected directly between pins 14 and 7 of U1 and U2. They are decoupling capacitors and they are needed for reliable operation of these ICs.
U1A and U1B form a triggered monostable. In the idle state, pin 1 is high, because SW1 is not pressed and RP1 pulls the input high. Pin 5 is low (pulled low by RT1), so pin 4 is high. Since pins 1 and 2 are high, pin 3 is low. Pin 6 is pulled high by RC1 and will be covered shortly.
When SW1 is pressed, pin 1 goes low so pin 3 goes high. Because CT1 is currently discharged and has no voltage across it, it pulls pin 5 high as well, which causes pin 4 to go low. This latches the two gates into this state, because even if SW1 is released, pin 3 will remain high because pin 2 is low.
In this state, CT1 starts to charge through RT1. The voltage across CT1 increases, and the pin 5 voltage falls, until the U1B gate regards pin 5 as low. When this occurs, pin 4 goes high. Pins 1 and 2 are now both high, so pin 3 goes low. CT1's negative plate now goes below the 0V rail, but DT conducts and ensures that CT discharges fairly quickly. The circuit is now back in its default state, ready to be triggered again.
U1D and U1C form an identical circuit that is triggered by SW2. When SW2 is pressed, pin 10 will go low, and CC1 generates a brief low pulse on pin 6. If the SW1 monostable was currently triggered, this pulse will briefly force pin 4 high. As long as SW1 is not currently pressed, this will force pin 3 low and the SW1 monostable will reset to the idle state.
The same thing happens if SW1 is pressed while the SW2 monostable is in the triggered state, via CC2.
CT1 and RT1 control the active time of the SW1 monostable, and CT2 and RT2 control the active time of the SW2 monostable. The formula is roughly T=RC where T is time in seconds, R is resistance in ohms, and C is capacitance in farads. A 1M resistor and a 4.7 uF capacitor produce a time of around five seconds. The exact time is also affected by the voltage thresholds of the gate inputs, which are not accurately controlled and vary from one CD4093B to another and between manufacturers, so some adjustment of the resistor or capacitor values may be needed to get the desired timing. Timing will also vary with temperature and supply voltage.
U2B is a gated oscillator based on a Schmitt trigger inverter. While pin 5 is high, U2B acts as an inverter with Schmitt trigger input. CB1 is charged and discharged between the upper and lower voltage thresholds, through RB1. RB1 and CB1 determine the oscillation frequency. RB1 can be replaced with a 100k preset potentiometer (aka trimpot) if desired.
When pin 5 is low, pin 4 goes high and oscillation stops. U2A inverts the output and drives LED1. U2C and U2D are an identical circuit for LED2. When a monostable is triggered and its corresponding oscillator starts up, the first blink will be noticeably longer than subsequent blinks. This is because CB1 is initially fully charged, and takes a while to discharge to the low voltage threshold of the Schmitt trigger input. Once the oscillator has started running, the CB1 voltage slews between the low voltage threshold and the high voltage threshold, which takes a shorter time.
CMOS gate devices like these have relatively weak output stages and you should not draw more than about 10 mA from them. If more current is needed for the LED, an NPN emitter follower stage can be used to increase the current capability.
Pushbutton switches generate "bounce" when pressed and released. This causes multiple pulses to be seen at pins 1 and 13. Because the circuit detects and latches onto the first pulse, this contact bounce does not cause a problem.
This circuit has an extremely low quiescent (inactive) current drain and doesn't need an ON/OFF switch. If the LEDs aren't activated, the battery should last its shelf life.