What does uwsgi_socket_keepalive affect when using the uwsgi protocol?

These refer to two completely different things.

The keepalive parameter for an upstream refers to how long to keep a reusable connection open after serving a request. Some types of connections (e.g. HTTP, FastCGI) can service multiple requests on a single open connection, without closing and reopening it.

The directive uwsgi_socket_keepalive refers specifically to the TCP keepalive feature, which detects whether an open, idle connection is still alive. Though in practice, this really doesn't make a lot of sense, as a uwsgi connection isn't reusable and so it gets closed and a new connection opened with every request; it wouldn't remain idle for any significant amount of time in normal operation.