When overriding, you change the method behavior for a derived class. Overloading simply involves having a method with the same name within the class.
No, you can't, the signature of the virtual method must remain the same, only the keyword virtual is changed to keyword override..
No, moreover, you cannot access private methods in inherited classes, have to be protected in the base class to allow any sort of access.
Yes, that's what keyword sealed in the class definition is for. The developer trying to derive from your class will get a message: cannot inherit from Sealed class WhateverBaseClassName. It's the same concept as final class in Java.
They all must be public. Therefore, to prevent you from getting the false impression that you have any freedom of choice, you are not allowed to specify any accessibility, it's public by default.