Whenever you want to determine the length of an object in a given Frame of Reference, the time coordinates must have the same value. You fulfilled this requirement in the first frame when you said ta1=ta2=0 but when you transform the two events at either end of the object into the second frame, the new time coordinates will not be equal, tb1≠tb2.
One way to find a pair of events that will meet the requirement when the first event is at the origin in both frames is to multiply the x-component of the second event in the first frame by the velocity (assuming c=1) and use that as the time-coordinate for the second event in the first frame. Now when you perform the Lorentz Transform on the two events, the time coordinates will be equal and you will get the correct contracted length.
If the first event is not at the origin, then you have to take the delta between the x-components and multiply that by the velocity and add that to the time-coordinate of the first event and use that as the time-coordinate of the second event.
So, in your example, let's make the added assumption that xa1=0 which will put the first event at the origin. The we multiply xa2 by v to get vxa2 so the second event is [vxa2,xa2].
When you transform the time-coordinate for this event you get tb2=γ(vxa2-vxa2)=0, which is what you want, the t coordinate for the second transformed event equal to the first transformed event (which is at the origin).
When you transform the x-coordinate for this event you get xb2=γ(xa2-vvxa2)=γ(xa2)(1-v2) and since γ=1/√(1-v2), this simplifies to xb2=x√(1-v2)=x/γ, which is what you want.