Trouble Understanding Instantiate

These 2 objects are coming in on top of each other.

var PlayerPiece_01 : Transform;

function Start () {
    Instantiate(PlayerPiece_01, Vector3(0,0,6), Quaternion.identity);
    Instantiate(PlayerPiece_01, Vector3(0,0,0), Quaternion.identity);
}

I assume this is because I dragged the prefab onto the variable in the inspector as the "Instantiating Prefabs at runtime" help page said I should do .. and it's taking the transform from that?

Also though .. does it know which prefab to use simply from the variable name?

The code you gave creates two copies of the object referenced by the PlayerPiece_01 variable and place them in the scene at 0,0,6 and 0,0,0 respectively - with no rotation.

However, do notice that if some child-transforms of the referenced object are offset from the parent object, that same offset will also apply to the two copies.