Vibe coding is a coloquial term for describing a program to a large language model in plain language, and basically accepting whatever it gives you. Ars Technica has a good write-up. According to Ars, Andrej Karpathy coined the term on February 2, 2025 in a status posted to his account on X.com:

Image credit: Ars Technica
It took some digging, but I found his original post, which is below in full:
There's this new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper so I barely even touch the keyboard. I ask for the dumbest things, like "decrease the padding on the sidebar by half" because I'm too lazy to find it. I "Accept All" always, I don't read the diffs anymore. When I get error messages I just copy paste them in with no comment, usually that fixes it. The code grows beyond my usual comprehension, I'd really have to read through it for a while. Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away. It's not too bad for throwaway weekend projects, but still quite amusing. I'm building a project or web app, but it's not really coding - I just see stuff, say stuff, run stuff, copy paste stuff, and it mostly works. — Andrej Karpathy on X.com (Web Archive link)
So, right from the source, if we are to believe Ars Technica and Business Insider, too.
As for main principles? Read the above. That's what we've got so far. A guy posted on X.com. This wasn't researched and developed in a committee or national standards body, so no official list of principles or best practices exist except just talk at these things, and keep talking until you get the desired output.
As with any new buzzword not backed by objective research, the strong points and principles are a developing story.
From my own interpretation, vibe coding is good for prototypes and throwaway code, which Andrej mentions in his post. Think, scratch pad on steroids. You're thinking through the problem, not the code (just don't be this guy).
Now, if you'll allow me to have a bit of fun with an old meme:

If AI is all that is wrong with software engineering, then vibe coding is the dumpster fire around which the ignorant dance naked and carefree. If, however, you ascribe to the message in the commercial from which this meme originates — take a risk, throw caution to the wind, live dangerously and enjoy the ride — such an assertion would seem to miss the whole point.
I don't always use memes in my answers, but when I do I use them to make a philosophical point.