x"123ABC" represents a string with hexedecimal represenation. It can be mapped easily to any array of bit or std_logic (bit_vector, std_logic_vector, unsigned, signed, ufxied, sfixed).
to_unsigned is a function that converts an integer into an unsigned type (which is an array of std_logic).
VHDL is strongly typed, and so you have to be careful.
PS. if you actually want a number in binary assigned to led, you can do this:
led <= to_unsigned(2#000001000#, 9);
The 2#N# tells the compiler the number between the hashes is in base 2. otherwise it defaults to base 10.