What I have is a C#, .NET 4.5 ComVisible(true) library that is being consumed by an Excel 2010 VBA client.
I have two questions:
1 –
In VBA when I add a reference to my tlb from “Tools -> References” I get the “Available References” dialog which displays my library reference name as the same name of my .tlb file but without the extension. If my .tlb file has a space, then it will be replaced with an underscore in the dialog.
The following thread discusses a similar issue, but from a VBA project point of view:
How can I put spaces in my VBA project name?
From my C# project, how can I control the name that will appear in “Available References”
(including using spaces)?

2 –
With regards to the namespace of my library, how can I choose a namespace that is independent from my reference name and my .tlb name? e.g:
Dim oMyTest As New MyCustomNameSpace.MyTest
I have tried the following in C#, but it didn’t work, it was always picking up the .tlb filename as the namespace:
[ProgId("MyCustomNameSpace.MyTest")]
public class MyTest: IMyTest
What do I need to change in C# to control my namespace within VBA?
The conversion from assembly to type library is described in detail in this MSDN Library section. The "Exported Assembly Conversion" article has the relevant details that you are asking about. Quoting them:
Note that the [assembly:AssemblyDescription] attribute in ASsemblyInfo.cs uses an empty string by default. You can edit it directly or use Project + Properties, Application tab, Assembly Information button.