In this post (Re: Edison breakout runs LED blink demo code issue) KurtE said that the mraa pinout is not the same on the breakout board and on the Arduino breakout. That could explain your GPIO problems. I would refer to the mapping of this table: mraa: Intel Edison
There must be something in the MRAA library that detect if the board is an Arduino break-out or not.
By the way, I'd like to see a picture of your custom PCB. I'm waiting for one I made to arrive in a couple days. Did you have problem soldering the 70-pin connector to your board?
The link you sent was necessary mraa: Intel Edison. I couldn't figure out in short order how to get mraa to treat a new board like the Arduino so couldn't get the correct numbers to put into the mraa_pwm_init without the link. So on my development system with the Arduino board I may have mraa_pwm_init(3) which means GP12 but really responds to mraa_pwm_init(20) on a non-arduino board. Which means when you move away from initial proof of concept you have to change all your code's pin assignments. So since mraa has a hidden "mux" function based on board I have to implement another mux function in my code to move through development. Probably easier to write a mraa_force_board_type() but then we'd have to do mraa updates by hand.
You may want to look at the the miniboard mapping snce that's what mraa will be using - http://iotdk.intel.com/docs/master/mraa/edison.html. If you where using the arduino config your board would be doing all sorts of weird things....
Also you can use the _raw calls if you have some specific stuff and you don't want to write a mraa platform file.