Trigger popup in a php if/else statement

You are creating a cookie_checker function that returns the shortcode.
However, the action you are hooking into (init), is executed too early (before the page content is created).
You could instead try to “echo” the shortcode content in the footer of the page by hooking to wp_print_footer_scripts.
An example I haven’t tested, but should work:

function cookie_checker() { 

// Check if cookie is already set
if(isset($_COOKIE['tln_cookie'])) {

// Do this if cookie is set 

} else { 

// Do this if the cookie doesn't exist 

echo do_shortcode("[sg_popup id=1]");

}

}
add_action('wp_print_footer_scripts', 'cookie_checker');

You can learn more about the order in which WordPress fires its actions here: http://rachievee.com/the-wordpress-hooks-firing-sequence/