Why use projective coordinates?
Projective coordinates are often used to represent points on an elliptic curve. This is useful for two reasons. It provides an easy way to represent the point O on an elliptic curve using the same coordinate system that all of the other points use. It also may be more efficient to do operations on projective coordinates than on the usual, or affine, coordinates.
Projective coordinates represent ratios of numbers instead of just numbers. So the number 4 could be represented as either 4 = 4/1 or as 4 = 8/2, which we would write as (4,1) and (8,2) in projective coordinates. Clearly, there's not a unique way to represent affine points in projective coordinates.
To encode the point at infinity, we just set the last coordinate to 0, using division of anything by 0 to indicate infinity.
If we have to numbers x1 and x2 we can write them in projective coordinates as
x1 = X1/Z1
x2 = X2/Z2
If we want to calculate x1/x2 we can use the projective coordinates to find that
x1/x2 = (X1/Z1) / (X2/Z2)
= X1Z2 / X2Z1
which we can write as
in projective coordinates.
Note that this means that we've actually calculated x1/x2 without using any division operations at all. The tradeoff is that it takes more operations to implement projective operations. In this example, we've calculated x1/x2 without using any division operations, but at the cost of using two multiplications instead of one division. But if division operations are significantly more expensive that other operations, this can be a useful way to avoid using the more expensive operation.
There are actually more than one way to define projective coordinates in a useful way for points on elliptic curves. The most common way writes an affine point
P = (x,y)
as the projective point
P' = (X,Y,Z)
x = X/Z
y = Y/Z
This form of projective coordinates also has the advantage that division operations on coordinates can be implemented without using any division operations. Whether or not it's actually preferable to using affine coordinates depends on exactly how fast additions, subtractions, multiplications and divisions are on a particular platform.