Używając Twojego sposobu musiał byś pamiętać o tym, by odjąć od top i left, 1/2 odpowiednio wysokości i szerokości elementu centrowanego (jeżeli ma on stałą wysokość, możesz ten efekt uzyskać przy pomocy funkcji calc(). Natomiast polecam użyć flex'a do rozwiązania problemu:
.div1 {
display: flex;
justify-content: center;
align-items: center;
}
Po dodaniu tych styli do div1, div2 powinien wycentrować się automatycznie (niezależnie od rozmiaru).