I have web application where i have created one site collection for development environment. In this site collection i have created Custom web part, custom master page, timer job, ootb list/ library etc. Also User profile services is configured in this web application.

Now I have another farm where i want to create QA environment for the same application for testing purpose so in future if i m doing any changes in dev environment i will just deploy my wsp in QA and test it. Please advice the steps.

You should start packaging your individual components in Wsp. So i would be easier for you move your solution from one farm yo another.

You should create you Web parts in visual studio, Create a feature to deploy your custom master page, Create list definitions and instances for OOTB list and libraries and deploying these components to your site using features.

If you are building an application that needs to be moved between environments, you should be building it using Visual Studio. This allows you to create a solution package that can be deployed to multiple environments without worrying about GUID issues.

You can attempt to use Save Site as Template to get a .wsp file on the server you have. You can then install this on another server. You may or may not have issues though.