The much simpler solution to your custom build version problem is to make use of the Pull Requests do not increment build number setting in General tab of project settings. Or if you are using yaml config file the setting is pull_requests.do_not_increment_build_number: true
As for customizing artifact push based on PR build you could conditionally check for APPVEYOR_PULL_REQUEST_NUMBER environment variable and if it is set, push your artifact.
And about your last question, PR builds are not deployable by default. In fact, only private repos are allowed to be deployed.