| Bytes | Lang | Time | Link |
|---|---|---|---|
| 100 | Some Spreadsheet | 250728T205527Z | doubleun |
| 490 | Standard Pascal | 250728T183917Z | QOO-OOKA |
| 333 | Python | 250728T183348Z | QOO-OOKA |
Some Spreadsheet, 100 bytes
=let(y,year(C1),m,month(C1),d,day(C1),index(A:A,mod(y*m*d,20)+1)&" "&index(B:B,mod((y+m)*d^2,20)+1))
The formula will work in Some Spreadsheet that happens to have those words in columns A and B and the target date in cell C1. Not sure where you should go to download Some Spreadsheet but I'm confident it exists.

Standard Pascal, 490 bytes
function f(y,m,d:integer):string;const a:array[0..19] of string=('Little','Magnetic','Gentle','Enough','Efficient','Inefficient','Grand','Cute','Gaming','Important','Master','Light','Heavy','Hard','Soft','Easy','Awesome','Real','Dirty','Fake');n:array[0..19] of string=('Bomb','Speaker','Mission','Feather','Arrow','Action','Focus','Animal','Computer','Cloud','Sun','Mouse','Wine','Cake','Money','Panel','Diamond','Chair','Wall','House');begin f:=a[y*m*d mod 20]+' '+n[(y+m)*d*d mod 20]end;
The reason it's longer than python answers is pascal lacks dynamic types, lists and symbols (mod is worse than % of python)
y is year, m is month and d is day.
Tested and worked on delphi.
Python, 333 bytes
f=lambda y,m,d:'Little0Magnetic0Gentle0Enough0Efficient0Inefficient0Grand0Cute0Gaming0Important0Master0Light0Heavy0Hard0Soft0Easy0Awesome0Real0Dirty0Fake'.split('0')[y*m*d%20]+' '+'Bomb0Speaker0Mission0Feather0Arrow0Action0Focus0Animal0Computer0Cloud0Sun0Mouse0Wine0Cake0Money0Panel0Diamond0Chair0Wall0House'.split('0')[(y+m)*d*d%20]
y is year, m is month and d is day.
Uses a smart way. First splits values with separator of 0, and uses .split('0') to turn to list type exactly. Then, reads with index of result.