Remember that BGP is an application that merely advertises prefixes between peers and rides on top of IP/TCP port 179. There already needs to be 'underlay' reachability between peers either by connected routes or other dynamic/static routing protocols.
eBGP requires directly-connected peers as the TTL=1 for those hellos. This can be overridden with the 'ebgp-multihop #' to set a different TTL. eBGP is by definition between two different autonomous systems (AS). This is typical for ISP connections
iBGP has a TTL of 255 so this can be peered across the enterprise within the same AS. This is typical for enterprise remote site connections or internal BGP as the main routing protocol of the enterprise.
With BGP you peer directly via IP address and not by multicasted hellos so static IP addressing is preferred as both sides of the peering need to match as it requires a TCP handshake for the peering to establish.
You are correct in that when you advertise a prefix to your ISP, the updates include your IP next-hop to point to your edge IP address. This is how the internet routers will route back to you.
If someone else in the internet advertises the same prefix via BGP, hopefully this does not happen as there is not much to do other than rely on backbone ISP filtering that will disregard the advertisement from other enterprises. As long as you have the route advertised first, oldest route wins between multiple paths from the ISP's perspective.