The Atmega328 (an AVR micro) is the 32k version (32k flash program memory = 16k instructions?) of the atmega88 (8k program memory) which is used in the arduino. Essentially, the same chip, with the same pinout, same hardware and same instruciton set. I realise the Arduino is generally used with 'wiring language', I've never used that myself, just went straight to C with the AVR's before the arduino took off. So if you've worked with the arduino already, using C, you're half way there!
If by 'micro-C' you mean the compiler 'MikroC' then thats quite a good complier for conforming to the C standard, as well as having many great built-in ruotines to set up hardware peripherals (I2C, SPI, UART, PWM etc..). The value of the crystal you use is really down to what you wish to do. 16Mhz is sort of a first port of call for many, many AVR's only go up to 16Mhz, so people just run them at full speed, the atmega328, I believe, either ha a max speed of 20Mhz, or 8Mhz (8Mhz for the low voltage one I think...). I wouldn't worry too much about a value, 16Mhz is a good starting point. Should you need instructions to be executed faster you can go up to 20Mhz, if power consuption is an issue (for portable apps) then slowing it down to 8Mhz would save power.
I would use a schematic of the arduino as a guide. Don't worry about the USB-UART part (FT232?) just the regulator, and oscillator circuits, as well as a programming header. Thats all the processor really needs, everything is just IO's which you can configure for whatever purpose you need. I generally put series resistors on all the IO pins, like 100-220ohms, because most IO's aren't required to provide much power (LED's need 15mA max, IO pins rated at 25mA, input current to a chips input is uA), and it will limit the current should you accidently set an IO as an output, and connect it to VCC/GND. Essentially safe-guarding against blowing IO pins.
All thats left is some buttons (again googling 'arduino reading buttons) and your LCD (I believe it uses the UART) and thats your testbed
Bells and whistles can be added later should you decide to add more features - no point in adding everytinhg, using up every IO pin, then having to write code for all of that, start off small. Eg: press button 1 - LCD displays something. button 2 - lcd displays something else. Most of that stuff can be done in an afternoon