The most basic program requires some form of planning, even if it is just a few notes on some scrap paper. It is always a good habit to plan, you will make fewer mistakes and write more manageable code if you spend time planning first. Personally I never "just jump into coding with just a vague idea of how a program is supposed to run".
>How complicated should a program be for you to
>make plans for it (eg. flowcharts, drafts, etc)?
Anything more complicated than the hello world program.
>When do you just jump into coding with just a vague
>idea of how a program is supposed to run?
When I'm prototyping. However, for me prototyping is simply another way to make plans for a program. I use it to throw around ideas and get a rough idea of what kinds of problems I'll have during development.