Yep, instance_create() is the right function.
(sorry havn't used Game Maker for a while (i use C# and AS2). I was just passing by... so the function (instance_create) might be wrong....... =P)
is it possible to refer to an object using a variable?
objectinmypocket = "obj_key"
(assuming the object obj_key actually exists)
objectinmypocket.x = 100
objectinmypocket.y = 250
Yes, this is possible, but you wouldn't use quotes around obj_key because its a real value, not a string. The name of the object is a kind of special global variable itself, so if you assign its value to some other variable it can be used the same way as you would use the object name. Aside from using it in constructions such as object.x or object.speed, you could pass the variable as an argument to a function or use it in "with" statements.