The difference is between Analogue and Digital.
Analogue (A0 in your Case) is a voltage that is measured and will never be 100% accurate because there are various things that cause different readings for example, a relay that is on, a percentage variance on a resistor that causes different voltage drops etc, whilst a Digital input is 1 or 0 - On or Off essentially, so a button on a Digital Input would react like you would expect - On or Off whilst on the Analogue input it would be a voltage that it is reading, so in your case, 1028 (1023 ?)* would be sightly more than the 3.3 volts you are giving it (so 8 would be so negligible as to not make a difference and could be some type of noise on the circuit or the floating voltage present on ATMega Analogue pins)
So, to illustrate the point, you could have 5 buttons on an Analogue pin (by using a
voltage divider), that with some If statements in your program you could sense each one and react to it - whereas on a Digital input you could only have one BECAUSE it is On (1) or Off (0) essentially.
I trust that this will somewhat explain.
Enjoy !!
* An Arduino has a 10-bit analog to digital converter. This means that it will map input voltages between 0 and 5 volts into integer values between 0 and 1023. This yields a resolution between readings of: 5 volts / 1024 units or, .0049 volts (4.9 mV) per unit, similarly 3.3v/1024 = 0.0032 or 3.2mV