Your use case appears more suited for iterating over the vertices of the output route geometry.
This is not my area of expertise, but I did find the IConstructAngle.ConstructThreePoint method. You would input from, through, and to points, and get the angle value created by the three points. As you iterate the vertices of the route geometry, you can calculate what the next angle is for input to your robot.
You also stated, "I have the route saved and displayed as layer ,now should i use that layer file or the result nalayer that is being saved as the result layer(.lyr)"
If you do elect to retrieve your route feature using the Routes class in the NALayer, the way I usually get to the associated feature classes is by first retrieving the NAContext from the NALayer via INALayer.Context. Then use INAContext.NAClasses to get your Routes class, like this:
INAContext naContext = naLayer.Context;
INAClass naClass = naContext.NAClasses.get_ItemByName("Routes") as INAClass;
Then you can cast your NAClass as a feature class and iterate over it with IFeatureClass.Search.
I didn't try running your code, but I think I see what your problem is. In the method IEnumVertexExample, you take a NALayer (cast as ILayer) and try to cast it as a IPointCollection:
public void IEnumVertexExample(ILayer nlyr)//(add nalayer(route) here)
{
IPointCollection pointCollection = nlyr as IPointCollection;
Here is a helpful hint in using the resource center to work with ArcObjects: You can go to the link for an interface and see which CoClasses implement that interface. If you go to IPointCollection, and scroll down to "CoClasses that implement IPointCollection", you won't see NALayer as one of those options. You need one of the classes that is listed there. In your case, you need a Polyline.
For the most part, a layer is just a reference to some data, for the purposes of displaying it in ArcMap or elsewhere. Network Analyst Layers (NALayer), instead of referencing data in a geodatabase or shapefile, references some in-memory feature classes. More specifically, the NALayer is a composite layer that holds sublayers that reference in-memory feature classes. I know, it is a bit confusing.
For your scenario, you need to take your INALayer, get its Context, via INALayer.Context. Then you use the Context to get to the subclass that interests you, "Routes". That subclass holds your output route geometry.
Then you use a feature cursor to iterate over the rows of the class. You should only have one row in your Routes class. Get that row and get the polyline from it. That polyline is your output route geometry.
INAContext naContext = naLayer.Context;
IFeatureClass routesClass = naContext.NAClasses.get_ItemByName("Routes") as IFeatureClass;
IFeatureCursor cursor = routesClass.Search(null, true);
IFeature feature = cursor.NextFeature();
IPolyline outputRoute = feature.Shape as IPolyline;
Then just pass your outputRoute to the method you made called "IEnumVertexExample", instead of a layer. The outputRoute will not be null when cast as IPointCollection, because a Polyline supports that interface.
To tie up the resource center part of this forum post, if you go to the help page for IFeature.Shape, you see that the Shape is returned as an IGeometry. If you follow the link to the IGeometry page, you see that one of the CoClasses that supports IGeometry is a Polyline. And a Polyline is what you need to cast as an IPointCollection. Bingo! We came full circle.