Hola, respecto a la primera pregunta, se hace debido a que para aplicar estilos es necesario hacerlo sobre las etiquetas correctas, el div se aplicó para poder agrupar etiquetas y luego posicionarlas, el nav li también posicionar, pero rompiendo su display para poder alinear la lista horizontalmente y nav a es mas especial por que hay determinadas propiedades de esta etiquieta (anchor) que solo pueden ser modificadas en ella, como el color y el text-decoration.
Respecto de "tenia entendido que la posicion es definida a través de cuatro otras propiedades : top, bottom, left y right", es tal cual lo dices, pero css trabaja asi:
- si le das los cuatro valores, el orden de los mismos será top, right, bottom, left (como siguiendo las agujas del reloj)
- si solo le das un valor, lo tomara para todos (top, bottom, left y right)
- per si le das solo dos valores, el primer valor lo aplicará al eje vertical (top y bottom) y el segundo valor al eje horizontal (left y right)
Igualmente así como tenemos margin y padding en los que se pueden definir los cuatro valores, también se pueden definir individualmente con:
margin-top: ;
margin-right: ;
margin-left: ;
margin-bottom: ;
Igual para el caso del padding.
Saludos