Regarding 1 question, assuming you are taking backup of site via central admin, backup command powershell or export command. Ideally you should do it during non business hours because, during time when backup is taken site will be made read only for some amount of time(until backup is completed). I would prefer backup command using powershell.
Backup-SPSite [-Identity] <SPSitePipeBind> -Path <String> [-AssignmentCollection <SPAssignmentCollection>] [-Confirm [<SwitchParameter>]] [-Force <SwitchParameter>] [-NoSiteLock <SwitchParameter>] [-UseSqlSnapshot <SwitchParameter>] [-WhatIf [<SwitchParameter>]]
Ref link for backup
After taking backup, you can take the backup file to your testing environment. Identify a site collection on which you need to restore the backup. Use Powershell commands to restore site.
Restore-SPSite -Identity <SiteCollectionURL> -Path <Backup file> [-DatabaseServer <DatabaseServerName>] [-DatabaseName <ContentDatabaseName>] [-HostHeader <Host header>] [-Force] [-GradualDelete] [-Verbose]
Ref link for restore
Note - Using powershell, we can only take backup of site collection, to restore a site collection we need to use powershell only.
Option to backup without power shell command.
- Go to Central Admin on Production environment, on left panel, click on Backup and Restore. Under Granual Backup- Perform a site collection backup, select required site collection and provide file name in text box.
Other option is to attach/detach content database, but this will be lengthy process just to move a site collection from one environment to another.