Is it possible to apply a delay depending on your road type within a road network e.g. for highways vs. city roads .... to account for traffic light delays, congestion etc? (I know you can apply a delay if you have a point file where you have known traffic light points.)
There are numerous options for "delays":
Network Analyst can apply delay via barriers. Barriers can either be point, line or polygon. They can either restrict or scale cost of the existing network feature. So you could add a line barrier with a scaled cost of 2 and it means it will take twice as long to go through that edge.
Network Analyst also supports real-time traffic feeds where you can get the exact slow down now and compute a path based on current travel times. It also supports historical or predictive travel times based on what your network dataset supports.
You can always recompute the travel time to be based on expected slow down and re-build the network dataset with these values.
Is setting up barriers the most efficient method? The road network is quite large, each road has a class code e.g. highway, local road. As an example, I just need a way to define that highways = no delay, local roads = 5 seconds
In your case, the most efficient method is to bake this into the network dataset. So add a new FT_ LocalDelay and TF_LocalDelay fields on your streets feature class and calc them according to your needs (i.e., old traveltime + 5 seconds for local roads) and then in the Network Dataset, define a new impedance attribute called LocalDelay and set it to your new fields and rebuild the network. That way you will get the best performance.