That's an ambitious first project and The Arduino probably isn't your best option... It doesn't have a true-analog output and it has very limited memory.
If you want to try it, there is a library called [u]TMRpcm[/u] that can read an audio file from an SD card and "fake" the analog with fast PWM. It also has recording capability but "recording **is still being tested and may not perform as expected."
You'll need an amplifier to drive the speaker (or amplified computer speakers) but unfiltered PWM can sometimes do "bad things" to an audio amplifier.
You'll also need a preamp for the microphone and you have to bias the analog input because the Arduino can't read the negative-half of an AC audio waveform. A simple solution is a "microphone board" or "sound sensor board" which as a microphone and preamp built-in and the biased output.
You might look for a specialized recording/playback chip. There used to be one but I don't know if it still exists.
Or, you might consider using a [u]Raspberry Pi[/u] which is a "single board computer" (unrelated to the Arduino). It's got an operating system, memory, a regular analog audio output* (you still need an amplifier), and you can connect a USB computer-microphone.
- The analog output is also PWM-based but I believe it's filtered and higher-frequency PWM so it's easier to filter-out the PWM to get analog audio.