Some of this is described on the processor wiki. Bare metal means no OS.
Using CCS you have source level debugging and jtag support instead of printf.
Bare metal allows maximum possible hard real-time responsive but puts the burden of anything beyond the driver's provided in starterware on you.
If your system needs operating system like services you have 3 choices TI_RTOS , open source Linux or a Commercial RTOS.
read about the processor boot sequence in the TRM and read the PowerPoint on the wiki and baremetal howto it should be obvious that CCS uses a gel script that does the firmware equivalent of the 1st stage boot loader and uboot and the code is placed in RAM.
Then when your code works and you have your product hardware you decides what kind of loader beyond the Rom bootloader you want to implement which will determine the strapping of the pins.
Your question about programming languages I don't understand. All 3 languages are supported by GCC command line builds or CCS and RTOS use an API usually C language but some support c++. Calling C code can be done from assembler but requires understandings the registers used by the compiler.
Your final system design and budget dictates which OS, IDE/compiler and jtag barebones vs the open source Linux and printf debugging you go with.
This forum generally supports linux. Bare metal is supported by e2e forum if you plan on not reading and blindly expecting to get something working with minimal effort your probably better off in here maybe someone will write your Linux application code for you in here.
On Sat, Jan 6, 2018 at 4:36 PM, not you
Also, does CCS write the compiled the code onto the eMMC or the SD card?