Before you get too deeply into this, you might look into [u]X-10[/u], which is a home-automation standard. You can by all kinds of remote controlled switches, transmitters, and receivers, etc. Some of these replace your existing switches & outlets, and some simply plug-in (or are wireless) so you don't have to "touch" the AC wiring.
There are two important things about AC voltage.
1. You need to isolate the low-voltage from the high voltage (with a relay or opto-isolator, etc.).
2. You need to insulate/isolate humans from the AC voltage.
These two are related because if you don't isolate the low-voltage Arduino, not only can you damage the Arduino, you can damage yourself when you touch the Arduino (or the USB connector, etc.).
I'm not too worried about burning down the house... Yes a fire can happen, but in most cases (if something is miswired or something) you'll blow the circuit breaker before too much heat is generated. But, the circuit breaker will NOT protect you from electrocution.
The simplest way to isolate the Arduino (and yourself) from the AC is with a solid state relay ([u]example[/u]). A mechanical relay can work and it's cheaper, but most high-power mechanical relays can't run directly off the Arduino, so they need some sort of coil driver circuit.
But can arduino remeber what state ur in?
Of course! Every computer/microcontroller has memory.
You can read and write variables (see the [u]Language Reference[/u]). So for example, you can create a variable named LightState and set it's value to 1 when the light is on, and set the value to 0 when it's off. Or, if it seems more logical to you, you can make a type [u]boolean[/u] variable with a name like LightOn and make the variable true when the light is on and false when the light is off.
You'll also need to understand [u]if[/u] statements as well as logical [u]"and" & "or"[/u] logic.