There are different programs and protocols at work here each is configured to respond independently of the others.
To find an IP address, a linux host will generally use the hosts: directive in /etc/nsswitch.conf to determine which order to query the various sources. A typical entry would be
hosts: files dns
which says check the files (typically /etc/hosts ) then the dns system. So a search will be conducted of the /etc/hosts file and if it contains an entry for valgrind.org the associated IP address will be returned. If /etc/hosts doesn't contain an entry for valgrind.org, then a request will be made to the DNS. This involves reading the contents of /etc/resolv.conf to determine which servers should be contacted to request DNS information ...
Looking at the output from your command, you're not getting two different addresses. The first part of the output is telling you which server was contacted by nslookup (172.16.0.23) and also on which port (#53) to get the answer. We also know that there is no correctly configured PTR record for 172.16.0.23 as, as RobM's answer shows, the Server would be shown as a name if it were.
The second part of the output is the information that you requested and tells you that 178.250.76.80 is the IPv4 address of valgrind.org.
When you contact 178.250.76.80 on port 80 (http) directly you get a 403 forbidden because that's how the http server at that address has been configured. It is most likely configured as a name based virtual server and thus requires a valid http Host: (sec 14.23) header to route your request to the appropriate vhost.
The ping command is part if the ICMP protocol suite and is an ICMP echo request, the host at 178.250.76.80 responds to ping because it has been configured to do so and sends an ICMP Echo Reply to each Echo Request.