Actually, you dont need to decide everything all at once. That would probably be bad, actually. It could force you down the wrong road. Dont be afraid to try a few different things, then pick the one that feels most comfortable. Picking a language is like picking out shoes.
The PI has several languages, Perl, Python, C that would all work fine. I'm a perl person myself, so I'd start there, write a little test app to see if I can collect the data needed and display it. If you find it's to slow to render pretty graphic, you might have to switch to C. Script languages are simple and quick to implement. C/Cpp for performance.
BUT there are many many addon's for both perl and python that are written in C and linked in so you get the simplicity of a script language but the performance of C. For example:
http://search.cpan.org/~chm/OpenGL-0.6704/OpenGL.pod
And python will have the same thing.
1) How do I build a graphical application like that?
You have a few options. I like to run a really simple WM like blackbox, that way I can still run an xterm if needed. There are several very lighweight WM's you can choose from. There is a xwindows start script, usually something like ~/.xinitrc or ~/.Xsession, you just add your app to the bottom.
2) How do I get the data from the canbus
You might google: "open source canbus"
There are probably already projects doing it.
https://en.wikipedia.org/wiki/CAN_bus
Is this the interface you have. I've never heard of it, but there's a lot of info there. Any of that help?
2.5) How do I update the graphical interface?
Depends on your UI. Are you using OpenGL? Qt? Maybe you'd like to write a test app in each to decide what UI API you'd like to use first.
3) how do I program the bus to actively filter information
First work on #2. That'll help answer this question. It could be you cannot filter at the bus level. You pull everything back, but then only display what you are interested in. You can ignore this step for now.