Question: I have a project which is referring many libraries/dlls, I am not sure which one are needed and which one not. Is there some way or Visual Studio extension to find out if a library/dll reference (direct/indirect) is required in a project ?

Answer: 
Resharper has this functionality. You can right-click on the References folder and choose "Remove unused references". There is also an "Optimize references" option where you can see how your references are used.
Visual Studio has such a functionality for cleaning `usings` (respectively `imports` in vb) build in (this applies for 2012, 2013 - with 2010 I'm not sure). Just right click on usings:

![enter image description here](https://i.stack.imgur.com/mHInx.png)

Using [Resharper](http://devexpress.com/Products/CodeRush) (as Håkan Fahlstedt mentioned) or [CodeRush](http://www.jetbrains.com/resharper/) will give you some more options/comfort.

To get more Informations about the use of referenced dlls in your project [NDepend](http://www.ndepend.com/) is a nice tool (standalone and as studio extension). There is a [14-day demo](http://www.ndepend.com/NDependDownload.aspx) available.