По какому принципу этот аргумент передается в функцию?
https://learn.javascript.ru/function-basics
https://learn.javascript.ru/arrow-functions-basics
https://learn.javascript.ru/callbacks

a => a.name == "Adam"
/*
* стрелочная функция, принимающая на вход один аргумент, 
* который может быт назван как угодно, 
* и возвращающая при вызове результат сверки свойства name у переданного аргумента
* со строкой 'Adam'
*/

В свою очередь Вы передаёте в функцию filter два аргумента. Первый - arr, второй - стрелочная функция, рассмотренная выше.
Внутри функции filter второй аргумент назван как test - это и будет эта стрелочная функция.
Когда идёт вызов test(element) на деле происходит вызов этой стрелочной функции, в которую передаётся аргументом element.
В итоге сравнивается element.name == "Adam"

P.s.
Это
let arr = {
    object1 = {
        name: "Adam",
        year: 1997
    }, object2 = {
        name: "John",
        year: 2000
    }, object3 = {
        name: "Conor",
        year: 2001
    }, object4 = {
        name: "Adam",
        year: 2000
    }
}

Не валидная запись.
Толи это массив, толи объект.
Если массив, то 
так
let arr = [
    {
        name: "Adam",
        year: 1997
    }, {
        name: "John",
        year: 2000
    }, {
        name: "Conor",
        year: 2001
    }, {
        name: "Adam",
        year: 2000
    }
]

А объект так
let arr = {
    object1: {
        name: "Adam",
        year: 1997
    }, object2: {
        name: "John",
        year: 2000
    }, object3: {
        name: "Conor",
        year: 2001
    }, object4: {
        name: "Adam",
        year: 2000
    }
}

filter(
   arr,  // первый аргумент - array (объект(не массив) с фильтруемыми вложенными объектами)
   a => a.name == "Adam" // второй аргумент -  test (функция)
)

в результате внутри 
function filter(array, test) { ... }

аргументом test станет переданная стрелочная функция, как если бы мы написали:
const test = (a) => {
   return a.name == "Adam" 
}

для понимания приведу почти аналог этой функции в обычной нотации
function test(a){
   return a.name == "Adam"  // стравнивает a.name со строкой "Adam", возвращаетекгу true равны и false если не равны
}

далее:
if (test(element)) {            // проверяем равен ли name элемента строке "Adam"
      result.push(element); // если равен, то добавляем в результирующий массив
}