Just as the topic name reads, Initializer Lists and Inlining Constructors (and Destructors). Do these two in anyway improve performance and are they good habits?
Using initializer lists isn't just a matter of performance, although a call to the (copy) constructor via the initializer list is almost always better than default-constructing the object and calling operator= (or something else) later in the constructor body.
For constructors and destructors the same rules as for other functions: put them in the header if they're short and/or are often called with compile-time constants that allow heavy optimizations in the case of inlining.