The first letter (or letters if a Z is used), stands for the series of motor used. Engines used in Corollas were K, T, A, ZZ, C and NZ series.
The next letter refers to the general model type.
E = Corolla / Sprinter
A = old Celica / Carina, Supra
T = Corona, FWD Celica, FWD Carina, Caldina
P = Starlet
V = Camry
N = HiLux
J = Landcruiser
R = Tarago / Spacier
XP = Echo/ Yaris/ Vitz
XR = Tarago
XE = Altessa / IS200
XV = Camry
XA = Rav4
XM = Avensis
XU = Klugger
The numbers after that refer to the series or generation of vehicle, and go in increments of 10 for every major model change. The first version of any model is usualy 10.
eg: KE10 was the first corolla, KE20 was the second etc. Note that the first Celica made was a TA20. This is because the TA10 Carina was built at the same time using the same chassis.
The last number can refer to a different body shape, but mostly marks a different capacity engine used. But this last number change can mean many things, and is not consitent.
eg: KE20 = sedan 1200cc
eg: KE25 = coupe 1200cc
eg: TE27 = coupe 1600cc
eg: TE71 = 1600cc
eg: TE72 = 1800cc
eg: AE82 = 1600cc fwd
eg: AE85 = 1500cc
eg: AE86 = 1600cc
eg: AE101 = 1600cc
eg: AE102 = 1800cc
eg: AE104 = 1600cc wagon
eg: TCR10 = Tarago, 4 link rear
eg: TCR11 = Tarago, IRS
R or L after the basic model code means right-hand-drive, or left-hand-drive. Some cars in the 70's used a different letter here, such as "S" for hardtop, or "W" or "V" for van.
The A after the dash stands for "Corolla" in this case, as the same chassis could be used for a "Sprinter" badged vehicle or something else in other markets.
L stands for Liftback. (E = sedan, H = hatch, C = coupe, W = wagon etc.)
M stands for 5 speed manual. (P = 4 speed auto, H = auto)
D stands for basic trim level.
K stands for petrol twincam motor.
Q stands for Australian delivered, (A = Australia on some 80's cars).
Some Australian cars then have - PS, for power steering.
These codes changed quite a bit in the late 70's, so early cars will have different letters that mean something else. Australian made cars had many of these codes complete stuffed up, especialy KE70, AE82 and AE92 corollas and other Corona/Camrys of that era.
Before the dash, the letter referes to the basic engine series. The number refers to the generation of that engine, which usualy signifys a bore or stroke change :
T = T series engine, 1407cc
2T = T series engine 85 x 70mm = 1588cc
3T = T series engine 85 x 78mm = 1770cc
After the dash refers to the specific engine configeration. Any number of these letters can be used, or none:
G = wide angle twin cam head, high performance
F = 4 valves per cylinder, ecconomic design (often twin cam)
E = Electronic fuel injection
T = Turbo
Z = supercharged
U = Japanese emission package
H = Emission package
C = Emission package
This engine is a 1.8 liter T series engine, that is a performace twincam with turbo and EFI, and setup for Japanese emission standards.
New engines developed use a Z at the end of the code. Such as the 1AZ-FE engine in the Rav4. This is not a development of the old A series engine (4A-C, 4A-GE, 7A-FE etc) but a totaly new AZ engine series.
eg: ZZE122 Corolla, uses a 1ZZ-FE or 2ZZ-GE engine.
eg: FZJ105 Landcruiser, uses a 1FZ-FE engine.
New vehicle platforms developed that are not dirrectly related to a older model also get a new code, useing a X in front of the code. E is still the code for Corolla, but the V Camry code changed to XV with the widebody style in 1993. Sometimes the new letter used after the X is carried over from the pervious model, such as with the Camry. But sometimes it has no significance, such as a SXA11 Rav4. The XA Rav4 chassis has nothing to do with the A chassis of the Supra and older Celicas.
eg: SXA11 Rav4 uses a 3S-FE engine
eg: SXV10 Camry useds a 5S-FE engine. Previous model was the SV21.
More interesting is the use of a C in the body code. When a engine using the Z in the name is put into a body with a X in the name, the Z and X cancel to form a C.
eg: ACV36 Camry has a 2AZ-FE engine in a _XV36 body.
eg: MCV36 Camry has a 1MZ-FE engine in a _XV36 body.
eg: NCP10 Echo has a 2NZ-FE engine in a _XP10 body.
eg. KE10-000253 (I'm not sure how many numbers there are, can vary.)
The new VIN code looks something like this:
eg. JT2GHXE9300003825 (I just made that up).
From what I can gather, the last half is still a serial number. The first half describes the vehicle a little better than the model code, and tells of specific options and the like.
The first three letters tell where the car was made, as each manufacture has their own ID. I have only coded the first two letters.
JT = Japan Toyota
6T = Toyota Australia
JH = Japan Honda (just an example, Honda don't make Toyotas!)
AH = South Africa Toyota.
ML = Thialand Toyota.
The next six or so characters describe the model, and the last long number (often starting in zero) is the serial number which could be used to find the day it way made I guess.