This article explains that
520 = 我愛你 521 = 我願意
Many such abbreviations are somewhat intuitive from the mandarin pronunciation:
5918 = wu3jiu4yao1ba1 ~ 吾就要發
But I can see no connection between 2 and 願 or 2 and 愛 or 0 and 你！
The article explains that 520 means '20th, May' which is the day of a year designated as '网络情人节'(Online Valentine Day) since 2010
Thanks to the song 《数字恋爱》by 范晓萱, which used the term '520' to represent 'I love you' , people started to use this term the same way too.
It also stated in the next answer that '20-May' (520) is designated as the day for men to confess their love; '21-May' (521) is designated as the day for women to confess their love
(men say) "520" for "我爱你" (I love you)
(women say) "521" for "我愿意" (I am willing to accept your love)
both are texting/ messaging lingo
Yeah, I'm with you on this one, the connection is very hard to hear.
Ninchanese wrote a blog post about it that mentions [emphasis my own]:
How did 5.20 come to equal a Chinese love word that says I love you?
Talking about this special event, you may wonder why it occurs on this day and not another one in Chinese. The answer is quite simple. It’s all about the sounds. When you write May 20th in numbers, it’s written 5.20. When you pronounce the numbers 5. 2. 0 in Chinese, 五二零 wǔ èr líng, they sound very close to the words 我爱你 wǒ ài nǐ. See? They don’t sound exactly the same, but they sound quite similar, and that’s enough! The Chinese love plays on homophonic words and numbers with hidden meanings.
520 originally started as a slang word used by the Chinese online as a shortcut to say I love you in Chinese, like ILY in English. It then came to be associated with the date May 20th (5.20), which therefore became a very romantic day!
They even admit that it doesn't sound totally the same. It, seems, to makes more sense that 20 sounds like 爱你, rather than 2 = 爱 and 0 = 你 - a lot of things said together quickly are easily confused with other things.