Check this link out - very good tutorial exactly what you want from LadyAda. Her LCD has a block of pins at the end, most LCDs have 16 pins along the top with pin 1 at the top left (looking from the front). Note LadyAda pins are reversed from normal but if you have the back light sorted then the code below will help a lot.
Also another tutorial but no wiring diagram
From here I copied this -
// my pinout from L (LCD pin) to A (Arduino pin):
// LCD pin 1: Vss --> to Arduino GND
// LCD pin 2: Vdd --> to Arduino +5V
// LCD pin 3: V0 (contrast) --> to GND (I chose the PWM pin 10, see below)
// LCD pin 4: RS (register select) --> to Arduino pin 11
// LCD pin 5: R/W- (read/write) --> to Arduino pin 2
// LCD pin 6: E (H/L enable) --> to Arduino pin 3
// LCD pin 7: DB0 (data bit 0) --> to Arduino PIN 4
// LCD pin 8: DB1 (data bit 1) --> to Arduino PIN 5
// LCD pin 9: DB2 --> to Arduino PIN 6
// LCD pin 10: DB3 --> to Arduino PIN 7
// LCD pin 11: DB4 --> to Arduino PIN 14
// LCD pin 12: DB5 --> to Arduino PIN 15
// LCD pin 13: DB6 --> to Arduino PIN 16
// LCD pin 14: DB7 --> to Arduino PIN 17
// LCD pin 15: A/Vee (backlight+) --> to a 4.2Vcc source (see documentation)
// LCD pin 16: K (backlight-) --> to Arduino GND
note you can ignore the R/W line (connect it to ground) and use 4 bit mode (with the LCD 4bit library) by disconnecting LCD pin 7, 8, 9 & 10. The pin assignments for the 4-bit library are mentioned in the library code. The mistake I made initially here was to wire up the lower nibble (DB0 to DB3) instead of the high nibble (DB4 to DB7).
// --------- PINS -------------------------------------
//is the RW pin of the LCD under our control? If we're only ever going to write to the LCD, we can use one less microcontroller pin, and just tie the LCD pin to the necessary signal, high or low.
//this stops us sending signals to the RW pin if it isn't being used.
int USING_RW = false;
//RS, RW and Enable can be set to whatever you like
int RS = 4;
int RW = 11;
int Enable = 5;
//DB should be an unseparated group of pins - because of lazy coding in pushNibble()
int DB[] = {6, 7, 8, 9}; //wire these to DB4~7 on LCD.
PWM using an output from your MCU would be a much better way of controlling the brightness of the LEDs than using a pot connected directly to them. You could read the pot value with an ADC, and use that to control the PWM. You will need a suitable driver, of course, such as a MOSFET.
The AVR you are using isn't suitable for USB; you need one of the USB AVRs, such as the AT90USB162.
The AVR can run at any speed, but it needs a fast clock to handle USB comms. Use delays to slow things down for the LCD.
Best Answer
You could start by using the variable resistor to find the sweet spot for the screen contrast, then use a multimeter to measure the resistance at that point, that should give you a good value for a fixed resistor. Otherwise you could look at using a digital potentiometer chip that could set the screen contrast and could be controlled by the Arduino