I hear lots of time the words
generic being used in similar contexts (especially in software engineering) - what is the difference between them?
Outside of software, generic is usually used in contrast to trademark names. One speaks of generic drugs, for instance, to refer to drugs not produced by the original maker / developer. As such, it carries a whiff of second class.
Universal usually refers to requirements and applications. A universal power adapter, for instance, works over all of the voltages which one is likely to encounter. If a company had made a reputation by developing and selling the first universal power adapter, then a competitor who develops a cheaper (and perhaps less effective or reliable) version could be said to sell a generic universal power adapter.