The output of ifconfig is the following
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.178.43 netmask 255.255.255.0 broadcast 192.168.178.255
inet6 xxxx::xxxx prefixlen 64 scopeid 0x0<global>
inet6 yyyy::yyyy prefixlen 64 scopeid 0x0<global>
inet6 zzzz::zzzz prefixlen 64 scopeid 0x20<link>
ether aa:bb:cc:dd:ee:ff txqueuelen 1000 (Ethernet)
RX packets 10043888 bytes 13826164373 (13.8 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3274278 bytes 382981422 (382.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Why does one interface need/have three ip v6 addresses?
IPv6 differs from IPv4 not only in longer addresses, but also in address scopes for these addresses.
This means that every IPv6 address has a so-called scope. The scope is the part of a network in which the associated address is recognized as valid and routed.
You have 2 global scope and one link scope.