Les termes millier, million, milliard sont en fait des noms, et suivent en conséquence les règles d'accord de cette catégorie, au même titre que dizaine, centaine, millier, etc. D'autre part, ces prétendus numéraux sont nécessairement actualisés par un déterminant :
Il y a des milliards d'étoiles dans le ciel. Je pense aux millions d'euros qu'il a gaspillés.
Le numéral cardinal mille est toujours invariable.
Il ne faut pas le confondre avec le mille marin (unité de distance, équivalant à 1852 m), ni avec le mile anglo-saxon (unité de distance également, équivalant à 1 609 m), qui tous deux, en tant que noms, sont par conséquent variables :
Le navire a parcouru mille milles (1 000 milles).
Les numéraux cardinaux vingt et cent prennent un «s» au pluriel uniquement lorsqu'ils représentent des vingtaines et des centaines entières, c'est-à-dire, non suivis de dizaines ou d'unités :
Vingt euros, vingt et un euros, quatre-vingts euros, quatre-vingt-deux euros…
Cent euros, trois cents euros, quatre cent un euros, cinq cent douze euros…
Suivis de mille, ils sont invariables, mais suivis de milliers, millions, milliards, etc., ils prennent bien un « s » parce que de tels mots sont en fait des noms comme stipulé ci-avant :
Quatre-vingt mille. Deux cent mille. Quatre-vingts millions. Deux cents milliards.