The basic idea behind 1) is indeed pretty obvious: don't assume that something is true if you don't know it is true!
A good example are logic puzzles. So here you are given pieces of information like "Bob's shirt is red" or "Sara's shoes are white". Clearly, in a context like this we cannot assume that "John's socks are blue" if that's not given to us. Only work with what's given to you.
Another clear example is formal proofs: here, you are very explicitly given certain premises, and clearly you cannot ad any further premises to that.
In practice, though, it is not always clear what we can assume or not. In fact, look at most of the questions posted here on Math.SE. Often they are something like "Prove that for any natural number $n$ it is true that $n^2+n+3$ is odd". Well, exactly what are we allowed to use as givens here? Can we assume that every natural number is even or odd? Or do we have to go all the way back some Peano axioms? Or ...? Still, even in these cases you common sense and experience will give you a pretty good idea what you can or cannot assume. That every number is even either or odd seems pretty safe. But that $n^2+n+1$ is odd probably not. And you certainly can;t start with: "Let $n$ be some natural number. $n$ is odd. ..."
Regarding 2): I would put this idea even stronger. It is not just that sometimes we 'make the proof go' from the conclusion backwards, but that we do this pretty much every time! That is, the nature of the conclusion will tell us whether to set up the proof as a universal proof, a conditional proof, a proof by contradiction, a proof by cases, a proof by induction, etc. And those proof techniques are what is going to provide the all important 'proof plan' or 'proof skeleton': it provides the structure of the proof to which you then add the details.