Automating an SQL task on a monthly basis
What you are telling is possible.

A pseudo code would look like this :

[ Make sure to use database compression and have instant file initialization enabled.]


Check if it is first day of the month using select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)


if it is first day of month, backup the previous month database to archive as db_name_datetime_Month_archive.bak. 
backup the live PROD database and copy the file to DEV server and restore / overwrite the current database - use WITH REPLACE option when restoring.
Sync up users
Optionally since you are restoring database from PROD, you may have to sanitize it - remove PII or any sensitive information.
send out email to the concerned teams (DEV in your case) saying the restore or refresh job has been completed.



For backup and restore you can use PowerShell (make sure you use backup and restore method) or tsql.

You can completely automate the above pseudo code using sql agent job.