1) Разница лишь в том, что при вызове
http.ListenAndServe нужно было бы передавать вторым аргументом созданный
ServeMux. Если вы пользуетесь только стандартным пакетом
net/http, то проще использовать дефолтный ServeMux, в то же время создание кастомного Mux'а позволяет использовать такие пакеты, как
github.com/gorilla/mux
2) Хороший ответ на SO:
https://stackoverflow.com/a/13256311/7752659. Если коротко, то
http.ResponesWriter – это
interface, а
interface, грубо говоря, уже является указателем.
http.Request является указателем для того, чтобы при его изменении сервер мог "видеть" эти изменения