trouble with "Arduino.h"

extent:
Is there a time when a non-static objects constructor is called before init?

Non-static objects are constructed, well, whenever the object is constructed!

Consider:

void setup(void)
{
  int i = 5;
  while (i--)
  {
    MyObject my_instance(i);
    my_instance.do_something();
  }
}

In this case, my_instance is constructed 5 times, each time through the while loop, and destroyed at the end of it.

extent:
I noticed that the LiquidCrystal library is doing exactly this, calling pinMode for rs/rw/enable pins in it's constructor.

pinMode() may be safe, it may not. I haven't studied init() well enough to know either way. The fat that init() does lots of system setup leads me to steer clear of it precisely because I don't want to sort through every nuance of init() to determine what's safe or what's not.