There are many, many ways to do this. The worst would be manually dragging the objects from the assets.
A good way to do it is to make an empty game object called “GameManager” and attach a script to it that will manage the instantiation of obstacles.
In the top of the script, declare a public GameObject, and then drag your obstacle prefab into the script in the inspector.
public GameObject obstacle;
As you can imagine, you can have multiple GameObjects and make the script select one to instantiate.
To instantiate a GameObject use:
GameObject.Instantiate(obstacle, position, rotation);
On each prefab I make a script to make it move. You can use the Transform.Translate function:
myTransform.Translate(Vector3.left * speed * Time.deltaTime, Space.World);
Also check if the object is beyond the boundaries of the screen. It is smart to have the far left of the screen be equal to 0 on the x-axis. This way, you can easily check if the x-coordinate of the object is below 0 in the same script as the “moving script”. Remember that Transform.position.x gives you the center of your object, so you have to (in this case) add half the width of the object, to get the x-coordinate of the right side of your object.
To destroy the object (in a script attached directly to it):
Destroy(this.gameObject);
I hope this leads you in the right direction. Try experimenting and reading the Unity Script Reference about things you do not yet understand: http://docs.unity3d.com/Documentation/ScriptReference/