Under the app_ble.c file, for the case CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT, it is checking if the advertisement packet it receives contains manufacturing-specific data corresponding with a data length of 6 and values 0xFF,0x31,0x01,0x3B,0x04.
It is doing it based on the payload data in the advertisement packet, and thus No; It is not doing it based on the device address.
Notifications are inherently 1-way in that they can only be sent from a Data Server to a Data Client; Thus, unless both sides of the BLE connection contain both Client and Server profiles, you can only use notifications from the Peripheral to the Client (generally the Peripheral is the Server).
Either the Central needs to already know the handle of the characteristic it wants to write to (hardcoded to both devices, discovered previously, etc.), or it will need to scan and discover the handle of the characteristic that it wants to interact with. You can send data from the Central to a characteristic on the Peripheral with a characteristic write. This will send a write with the data you want written to the peripheral device, which will then handle the data.