In order to push policy to a gateway, an object for said gateway must exist (unless you're using SmartLSM, in which case a profile needs to exist).
Where a specific policy can be installed is a function of the policy package.
By default, you can push a given policy package to ALL gateways, but you can also restrict it to a specific gateway, as shown in the screenshot:
Whatever policy you install must make sense for the gateway you are installing it to, i.e. be expressed in terms that local gateway can understand (e.g. relevant subnets, users, servers).
Some organizations have different policies for different gateways, some use the same.
Most likely you will need to modify the policy somewhat each time a gateway is added.
You can also use the "Install-On" field of a rule to ensure it is only installed to a specific gateway.
If you want to refer to the local gateway itself as a Source/Destination in a policy, you can use an object called LocalGateway, which is a Dynamic Object that refers to the local gateway.
Each gateway will resolve this to its own IP addresses.
Note that in gateway releases prior to R80.10, rules that refer to Dynamic Objects will not template with SecureXL, and thus will have a performance impact.