-Is there an input function that remains true if you press a key once? An example might be a light switch. You press "o" to turn it on and it remains on until you press "f" to turn it on. Is this possible how can I do it?
No - you'd set a bool to true on "o", and set it to false on "f". You then check for the bool in update to see whether you need to act on it
-How might I parent the rigidbody named "Enemy" and seen as "var targetobject" in the script to the magnet?
You'd move var targetobject : Transform; to the top of the script, and assign it in the editor. rip out the var targetobject= gameObject.Find("Enemy"); and you're sorted
-Is this possible to do with a character controller as well?
Yes
-Is there a way to have my magnet only affect objects on a specific layer?
Yes - check the layer is equal to the wanted layer when you're going through which objects to move
-Is there a way to move an object, rigidbody, or whatever to another layer, give it a new name, give it a new tag, or something through scripting while the game is running?
yourGameObject.name = "New Name";
yourGameObject.tag = "Predefined Tag";
yourGameObject.layer = 0;
-Could I use the LookAt function with the rigidbody so that it looks at the magnet and moves forward until it's position is very close to the magnet where the rigidbody will then snap(copy) the magnets position and be parented to the playerobject.
Yes - you'd just do theRigidbody.transform.LookAt(targetobject); when you've made targetobject a transform, and after moving the object, check if (distance < threshold) before setting the position to the target position
Edit to answer the questions in your answer (which really should just be edited into the question or added as a comment ;) )
-It is not possible to press "o" once and have the light remain on until I press "f" and vice versa?
That's exactly what using a bool would let you do, with pretty minimal code
-You said to assign the rigidbody via the Transform function, but if I were to have several unique "enemies" is there a way I could make this script affect any and all of them?
you could do something like this:
var enemies : GameObject[] = GameObject.FindGameObjectsWithTag("Enemy");
and then you'd loop through them (similar to the last script)