I have

var contact : ContactPoint = collision.contacts[0]; 

I looked up contacts, and they are a vector3, so is this assignment really just getting the x value?

For example, if something is at the point (32, 10, 25) would I find that

collision.contacts[0] is 32

collision.contacts[1] is 10

collision.contacts[2] is 25

`collision.contacts` returns an array of `ContactPoint` structures representing each of the points at which the two colliders are making contact. There will be at least one point of contact in any collision, although there could potentially be many, hence the need for an array.

In order to access the spatial `x` value of the point of contact, you would use `collision.contacts[0].point.x`, remembering to replace the zero with whichever point of contact you are referring to. You can check the length of the returned array to see how many points of contact exist, although for most applications the first usually suffices.

No. Actually they aren't Vector3s; Collision.contacts is an array of ContactPoint, so the assignment is correct.