1) Currently Grav has the ability to secure pages by user role. So you can have a user login and have access or not to a certain page/s.
2) Users can now register via the frontend, but this needs to be setup and configured. See the login plugin for details: https://github.com/getgrav/grav-plugin-login#allow-user-registration
3) There is currently no logic to support having their own pages, but you could write a plugin to provide this.
4) Grav fully works with Nginx (just another webserver), also it works with Nginx reverse proxying requests to Apache (getgrav.org is doing this). A sample nginx configuration file is provided for Grav already: https://github.com/getgrav/grav/blob/develop/webserver-configs/nginx.conf