I understand that G is a point on curve which holds true for y^2 = x^3 + ax + b. But there can be several other points as well which holds true for above equation but how do we choose which one is our G?
There often are multiple points which could be generators. In fact, for prime order curves, every point on the curve is a generator.
For practical use, a specific point is picked based on some constraints.
May curves use rules such as lowest
abs(x) value or use some deterministic generator with a random seed.
I can't seem to find the login behind the G selection for secp256k1, however, but the point itself is defined in the curve specification.
It's defined in the specification of the curve. In Bitcoin, the curve was SECP256k1 is chosen and the curve parameters are defined here: SEC 2: Recommended Elliptic Curve Domain Parameters, Version 1.0