You seem to be confusing circuit-switching ideas with TCP/IP.
Talk of Port 80 suggests the HTTP protocol over TCP and IP. With TCP/IP the intermediate nodes (routers) do not need to keep track of "connection IDs". Dynamically maintained routing tables of IP-address ranges are used to forward packets. It is not necessary that successive packets follow the same path.
The server keeps track of TCP connections using the clients IP-address and TCP port number as well as the server's port number (and server IP-address, servers can have multiple IP-addresses). A connection is identified by the combination of those four pieces of information. The client port number is usually chosen pseudo-randomly by the client.
Note that UDP is connectionless, there is no concept of a UDP connection. Many Internet application-layer protocols use UDP as a transport-layer protocol.
Do packets need any more header data other than a connection-id number once a connection has been established with another program?
TCP headers and IP headers in TCP/IP packets don't contain "connection ids" as such.
After a connection is made through, say port 80; does data still go through that port,
Yes.
or has the connection-id established specified a new open port to use for further communications?
As I said above, connection-ids, as such, do not exist in TCP/IP. Sometimes a higher level protocol establishes communications on other ports (e.g. FTP's control and data ports).
In correspondence with my question here; Is there an actual physical separation between different connections?
Not usually. A server can have multiple NICs serving different groups of clients.
Or is it purely theoretical/virtual?
Port numbers and such are just numbers in the packet headers.