As you're on SQL Server 2008 you can utilize the ROW_NUMBER function:
SELECT
t1.WO,
t1.x - t2.x,
t1.y - t2.y,
t1.z - t2.z,
t1.date
FROM tab AS t1
JOIN
(
SELECT tab.*,
ROW_NUMBER()
OVER (PARTITION BY WO
ORDER BY date) AS rn
FROM tab
) AS t2
ON t1.WO = t2.WO
AND t1.date <> t2.date
AND t2.rn = 1