How to identify regression tests?
How can we detect suitable regression test-cases in the full test suite to use whenever we receive new build?
What are useful strategies to go about such a selection?
This doesn't have a single answer; it depends on the state of the code and the level you're testing at.
At a high level, regression tests are tests that you have for things that currently work in the product, and should continue to work the same way in the future. So in order to identify regression tests, you need to identify parts of the program that aren't expected to change.
For what I test, mostly, this is easy, because my company made a promise that any code written against supported interfaces will always work. So our regression bucket, at a minimum, consists of all our test cases that test things that are designated as supported interfaces. If you're testing some product that exposes an API, or is callable somehow, you should be able to do something similar, if those interfaces are supposed to be stable.
However, not all companies/projects/products make the same promise, in which case, you can't necessarily use prior test cases that tested interfaces as a regression suite (although ideally if there's an API, there should be documentation provided saying what has/hasn't changed that you can use, and instead of changing already existing interfaces, they should create new ones/extend the existing ones).
Depending on your use of external libraries, you might also consider putting regression testcases together for those as well, in case they make some sort of incompatible change that isn't documented.