Having just come back from some time in Cologne travelling out to Wuppertal and Dusseldorf whilst there I have to say German ticketing is confusing - you can buy a ticket from Cologne to Dusseldorf from the DB ticketing machine going out travelling on VRS, but have to go to the VRS one coming back - the DB one wouldn't sell it at Dusseldorf.
The complexity here is that Cologne is in a different tariff region (VRS) to Wuppertal and Dusseldorf (VRR). Luckily tariff regions overlap in Germany and (as you have noticed) VRS have a machine in Dusseldorf even though it is outside their region. For the most part, the German fare system is good as you pay from zone to zone, meaning that you can use any mode of transport and you don't have to pay extra to travel on from the railway station.
It is usually easier to buy tickets using the app in Germany, as it works out the zones for you, and is sometimes cheaper than ticket machines as well. The VRS website shows the fare from Cologne to Dusseldorf to be 14.10 EUR (Preisstufe 5) but cheaper as "HandyTicket" at 13.67 EUR.
Within the wider state of NRW, there is now a new type of app ticket (eezy) which is priced like the Netherlands OV-Chipkaart fare system, as the pricing is not done on zones but using a base fare + distance x rate calculation like in the Netherlands. This can be advantageous for long distance trips, particularly across tariff regions where the alternative would be two tickets. It works by checking in and out at the start and end of the journey like the Swiss EasyRide ticket.
The VRR site quotes a fare of 9.90 using an eezy ticket between Cologne and Dusseldorf. This is just from station to station. There is daily (32.70 EUR) and monthly (at the 49 EUR Deutschland ticket price) capping with eezy as well as long as all your trips are within the state of NRW.