To enter diacritics in Windows I would suggest [this keyboard layout](https://code.google.com/p/usialtgr/). Certainly, you can create a "layout of your dream" :) with [Microsoft Keyboard Layout Editor](http://msdn.microsoft.com/en-us/goglobal/bb964665.aspx). However it's a bit boring, so I'd stay with the first option (which essentially is the product of such a generator).

With this layout you could enter lowercase diacritics with `<right-alt>+<base_letter>` and uppercase with `<right-alt>+<shift>+<base letter>`. I use this layout when I write Spanish (huh, ¡Español! :) or e.g. Ágil and found it the most conventient solution for Windows, especially when you need to do a lot of programmings, and thus have to enter "strings" or 'c'haracters all the time.

In Linux which is my primary desktop OS, I use the following xkb settings:

    xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete"      };
        xkb_symbols   { include "pc+us(altgr-intl)+ru(ruu):2+inet(evdev)+altwin(left_meta_win)+group(lctrl_lshift_toggle)+terminate(ctrl_alt_bksp)+keypad(pointerkeys)+level3(caps_switch)"        };
        xkb_geometry  { include "pc(pc104)"     };
    };

This allows me to write English with all ' (quotes), " (double-quotes), and \` (backticks) as usual plus diacritics like á or ¡ by pressing `<CapsLock>+<base_letter>` (it's more convenient than `<alt>+<base_letter>`, because `<alt>+<letter>` are often used for shortcuts). Also I have a completely separate layout for Cyrillic (Russian + sometimes Ukrainian), turned on and off by left `<ctrl>+<shift>`