module.exports = {
head: [
['link', { rel: 'icon', href: '/logo.png' }]
]
}
[module.exports]
head = [
['link', { rel = 'icon', href = '/logo.png' }]
]

Arrays were homogeneous in earlier versions of toml, so it appears the VSCode plugin you're using is not up-to-date since it's expecting the array to only contain strings based on the type of the first element. You'd have to change the inner array to an inline table instead:
[module.exports]
head = [
{ link = { rel = 'icon', href = '/logo.png' } }
]
(or update your plugin)
Even Better TOML advertises support for TOML 1.0.0.

https://v1.vuepress.vuejs.org/guide/frontmatter.html#alternative-frontmatter-formats
OK, you originally asked a pretty academic language question, and I answered on that basis, but this isn't the place for general tech support unrelated to TOML. This is an issue you're having with vuepress and is well out of scope for a TOML _language_ issue. Perhaps you should find whatever passes for vuepress tech support or discussion boards and ask there.
https://github.com/vuejs/vuepress is probably the right place.
Thank you, I've found a solution, the code is as follows:
[[head."link"]]
rel = "icon"
href = "./favicon.ico"
type = "image/x-icon"
[[head."link"]]
rel = "shortcut icon"
href = "./favicon.ico"
type = "image/x-icon"
Most helpful comment
https://github.com/vuejs/vuepress is probably the right place.