Yes, each interface has its own config file. WireGuard doesn't have built-in "client" or "server" roles -- every node is considered a "peer".
If you have two peers, Peer A and Peer B, the config file for Peer A will have the settings for its own local interface in the [Interface] section, and the settings for its remote connection with Peer B in a [Peer] section. Similarly, the config file for Peer B will have the settings for its own local interface in the [Interface] section, and the settings for its remote connection with Peer A in a [Peer] section. So the [Interface] section in Peer A's config corresponds to the [Peer] section in Peer B's config; and the [Interface] section in Peer B's config corresponds to the [Peer] section of Peer A's config.
Endpoint ([Peer] config section) is the remote peer's "real" IP address and port, outside of the WireGuard VPN. This setting tells the local host how to connect to the remote peer in order to set up a WireGuard tunnel.
In the example config, where Endpoint = 54.91.5.139:1952 for the remote peer, any packets routed through the virtual WireGuard tunnel for that peer will actually be encrypted, wrapped in a new set of UDP packets, and sent across the Internet (or some other "real" network, like your corporate network) to 54.91.5.139 UDP port 1952.
Unless you're also doing some fancy routing on the local host outside of WireGuard, if you try to send ping packets from the local host to this endpoint (eg ping 54.91.5.139), or if you try to access some other service of the remote peer from the local host via this endpoint address (eg navigate to http://54.91.5.139/ in a web browser), you will not be using the WireGuard tunnel -- you will be using your regular Internet (or other "real" network) connection.
AllowedIPs ([Peer] config section) is the set of IP addresses the local host should route to the remote peer through the WireGuard tunnel. This setting tells the local host what goes in tunnel.
In the example config, where AllowedIPs = 10.129.130.1/32 for the remote peer, any packets on the local host destined for 10.129.130.1 will not be sent directly over your regular Internet (or other "real" network) connection, but instead first sent to the virtual WireGuard tunnel. WireGuard will encrypt them, wrap them in a new set of UDP packets, and send them across the Internet (or other "real" network) to the peer's endpoint, 54.91.5.139. From there, the peer will unwrap and decrypt the packets, and try to forward them on to 10.129.130.1.
So if you try to send ping packets from the local host to 10.129.130.1 (eg ping 10.129.130.1), or try to access some other service of 10.129.130.1 (eg navigate to http://10.129.130.1 in a web browser), you will be using the WireGuard tunnel.
Conversely, like you mentioned, for packets that have come through the tunnel from this remote peer, if they, once unwrapped and decrypted, have a source IP outside of the block(s) specified by AllowedIPs (eg the source IP is 10.1.1.1 instead of 10.129.130.1), the local host will drop them.
Address ([Interface] config section) is the virtual IP address of the local host, within the WireGuard VPN. This setting affects the routing of packets going in and out of the WireGuard tunnel, and therefore should not be a "real" IP address routeable outside of the VPN.
In the example config, where Address = 10.193.130.174/16, the virtual IP address of the local host within the WireGuard VPN is 10.193.130.174. Therefore any packets from local sockets that the local host sends through the WireGuard tunnel will have a source address of 10.193.130.174, and any packets it receives from the tunnel with a destination address of 10.193.130.174 will be routed back to a local socket (unless you're doing some fancy routing outside of WireGuard).
Let's say the "real" network address of the host is 10.10.10.10. If, from the host, you run ping 10.129.130.1, the host will generate ping packets with a source address of 10.193.130.174 and a destination address of 10.129.130.1, and send them through the WireGuard tunnel. WireGuard will encrypt these packets, and wrap them with UDP packets where the source address is 10.10.10.10, the source port is 51820 (the WireGuard default, since no ListenPort was specified in the config), the destination address is 54.91.5.139, and the destination port is 1952. It will then send these UDP packets out to the "real" network.
When the remote peer, listening on a "real" network interface at IP address 54.91.5.139 and UDP port 1952, receives these packets, it will unwrap and decrypt them. It will then re-queue them on its own network stack in their original form, as ICMP packets with a source address of 10.193.130.174 and destination address of 10.129.130.1.
And if the original host receives a reply back from this remote peer for the ping, it would be received initially from a "real" network interface as UDP packets, with a source address of 54.91.5.139, a source port of 1952, a destination address of 10.10.10.10, and a destination port of 51820. WireGuard would unwrap and decrypt these packets back to their original form as ICMP packets with a source address of 10.129.130.1 and destination address of 10.193.130.174, and re-queue them. Since the IP address of the virtual WireGuard interface is 10.193.130.174 (as configured via the Address setting), the local host will know to route these packets back to a local socket.
Note that specifying a netmask for the Address setting (/16 in our example) affects the routing decisions made by the local host about what traffic should be sent into the tunnel (and what to do with traffic received by the tunnel), in a way that can be redundant to, or at cross purposes with, the AllowedIPs setting. In our example, Address = 10.193.130.174/16, which will normally result in all traffic destined for any address in the 10.193.x.x range to be routed to this WireGuard interface on the local host (not including the interface's own address, 10.193.130.174, which would be routed to the loopback interface).
However, the AllowedIPs setting for the only peer in our example doesn't include anything in the 10.193.x.x range. So if we ran ping 10.193.0.1 on the host, the host would generate ping packets with a source address of 10.193.130.174 and a destination address of 10.193.0.1, and send them through the WireGuard tunnel. But since that destination address doesn't fit into the AllowedIPs of any configured peers, WireGuard would drop those packets.
So usually it's simplest to omit the netmask in the Address setting (for IPv4 addresses, or use /32, which has the same effect), and use only the AllowedIPs settings on each peer to control what is routed to it. Usually you'd specify a netmask only if you had a number of different peers using the same virtual subnet (or if you were doing some fancy routing outside of WireGuard).
One more thing to know about Endpoint is that you only need to set it on one side of a WireGuard tunnel (but you can set it on both sides if both sides have a static IP). If you set an Endpoint for Peer B in Peer A's config, but you omit it for Peer A in Peer B's config, Peer A will be able to initiate and set up the tunnel with Peer B, without Peer B having to know Peer A's endpoint ahead of time.
This is ideal if Peer A has a dynamically-assigned public IP address; but the drawback is that Peer B won't be able to initiate the tunnel -- it will have to wait for Peer A to connect to it. If you sometimes need for Peer B to initiate a connection to Peer A, you can mitigate this by including a PersistentKeepalive setting for Peer B in Peer A's config -- this will direct Peer A to proactively reach out and connect to Peer B every N seconds (where N is the value you put in the PersistentKeepalive setting).