I’ve heard that the words “non-veg” and “non-vegetarian” are not legal English words (i.e aren’t in the dictionary). Is this true? If so, what is the right way to say that something contains ingredients that are not pure vegetarian or that someone eats meat?
If you are speaking to English speakers from India, these will be perfectly normal and familiar words. In other English-speaking cultures, people probably aren’t as familiar with the word, but I doubt they would have much trouble understanding what it means. So I would say it is okay to go ahead and use the word in any context.
In India, a larger portion of the population (maybe even a majority?) is vegetarian, so vegetarian food is kind of the default choice, and non-vegetarian is more of an exception. Whereas in other regions, the vast majority of people eat meat, and vegetarians are the exception, so no word quite like “non-vegetarian” has been invented. (“Carnivore” and “meat-eater” are ok substitutes for the noun, but for the adjective I think you’d need to use a phrase like “meat-containing” or just reword it.) If you’re interested in a linguist’s brief musings on this topic, you can read this blog post on Language Log.
Also, regarding “not legal English words (i.e aren’t in the dictionary)”: dictionaries describe how the language is used, not prescribe how it should be used. New words get added to dictionaries all the time, and old words get marked as “archaic.” For example, “spam” wasn’t added to the Oxford English Dictionary until 2009, but that wouldn’t have meant it was invalid to use the word in 2002.